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