Re: move_uploaded_file

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is exactly what I mean.
Documentation should never leave room to interpretation.
At least, this is what I think.

Roberto Aloi

On 11 Dec 2009, at 22:36, Ashley Sheridan <ash@xxxxxxxxxxxxxxxxxxxx> wrote:

On Fri, 2009-12-11 at 22:14 +0000, Roberto wrote:

Hi Joseph,

I'm perfectly fine with the concepts of absolute/relative path and
webroot, trust me.
For me it was just unclear from the documentation the fact that the
"target path" in the move_uploaded_file function was "absolute" with
respect to the file system and not to the "webroot".
At the beginning I thought the function itself was taking care about
adding the server root on its own to that path.
Thinking carefully, it makes perfectly sense for the function to
behave the way it actually does, since otherwise it would be
impossible to get these files out of the server root in file system
terms.
Just, this should be written in CAPITAL LETTERS in the documentation.
Thanks for the interest,

Roberto Aloi
http://aloiroberto.wordpress.com
Twitter: @prof3ta

> When used in PHP, an absolute path does not go off the web root. In Premise > 3 below, an absolute path of "/upload" will NOT bring up the directory > "/home/prof3ta/projects/moodle/htdocs/upload" but rather simply "/ upload"
>  In Windows terms, an absolute path would be "C:\upload" versus
> "C:\home\prof3ta\projects\moodle\htdocs\upload". The only time an absolute > path is figured relative to the web root is when it is referenced in a > browser. At this point, for all intents and purposes, it locates the file > based on the web root. This is a fundamental difference between absolute
> and relative paths.
>
> Absolute: begins at "/" in Linux operating systems and "C:\" in Windows OS > Relative: begins wherever the running script is located in the file system.
>
> Joseph
>
> Roberto wrote:
>>
>> HI,
>>
>> Premise 1:
>> echo exec("pwd"); -> "/home/prof3ta/projects/moodle/htdocs/ feedback_tool"
>>
>> Premise 2:
>> I have an "upload" folder with 777 permissions under:
>> /home/prof3ta/projects/moodle/htdocs/upload
>>
>> Premise 3:
>> The server root is obviously htdocs:
>> /home/prof3ta/projects/moodle/htdocs
>>
>> This said, the following doesn't work:
>>
>> <?php
>> $uploads_dir = "/upload";
>> $tmp_name = $_FILES["file"]["tmp_name"];
>> $name = $_FILES["file"]["name"];
>> move_uploaded_file($tmp_name, "$uploads_dir/$name");
>> ?>
>>
>> The following does work:
>>
>> <?php
>> $uploads_dir = "../upload";
>> $tmp_name = $_FILES["file"]["tmp_name"];
>> $name = $_FILES["file"]["name"];
>> move_uploaded_file($tmp_name, "$uploads_dir/$name");
>> ?>
>>
>> I consider it as a documentation bug (in the sample code they use an
>> absolute path).
>> I indeed believe I *should* be able to use both of them if not
>> documented otherwise.
>> I will dig into the C implementation of the move_uploaded_file
>> function and I'll check, though.
>>
>> Cheers,
>>
>> Roberto Aloi
>> http://aloiroberto.wordpress.com
>> Twitter: @prof3ta
>>
>>
>


I've never had any issue with the documentation for this function. I think it might just be an issue with interpretation? :p

Thanks,
Ash
http://www.ashleysheridan.co.uk



[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux