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.


Roberto wrote:

Premise 1:
echo exec("pwd"); -> "/home/prof3ta/projects/moodle/htdocs/feedback_tool"

Premise 2:
I have an "upload" folder with 777 permissions under:

Premise 3:
The server root is obviously htdocs:

This said, the following doesn't work:

$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:

$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.


Roberto Aloi
Twitter: @prof3ta

PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to