Re: move_uploaded_file

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

 



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