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