ID: 32644
User updated by: tck at tcknetwork dot com
Reported By: tck at tcknetwork dot com
Status: Open
Bug Type: *Directory/Filesystem functions
Operating System: WinXP(SP2)
PHP Version: 5.0.4
New Comment:
This happens both if I use zend optimizer or not (I doubted it could be
a possible source of problems. Note as well that my Apache (2.0.53,
using php as a module) root is on D:\Server if it may help.
Previous Comments:
------------------------------------------------------------------------
[2005-04-09 16:53:29] tck at tcknetwork dot com
Description:
------------
The move_uploaded_file() use the root of the hard disk in some special
cases instead of using the relative path from the script.
So far require() is not affected by this problem. I think it is just
this function that handles not properly the path.
Reproduce code:
---------------
My file system is built like this :
D:\Data (directory)
D:\Web\data (directory << note the ressemblance)
D:\Web\test\up.php (my script)
My script contains the following :
<?
$f=$_FILES["myfile"]["tmp_name"];
@move_uploaded_file($f,"../data/demo.jpg");
?>
<form enctype="multipart/form-data" method="post"
action="<?=$_SERVER["PHP_SELF"]; ?>">
<input type="file" name="myfile">
<input type="submit" value="upload">
</form>
Expected result:
----------------
When I send a file, I expect it to be uploaded into
dirname("D:\Web\test\up.php")."../data/demo.jpg"
it means "D:\Web\data\demo.jpg".
In fact when I submit a file with my script twice, the following
happens :
1st submit : File uploaded into "D:\Data\demo.jpg"
(using the root instead of relative path)
2nd submit : File uploaded into "D:\Web\data\demo.jpg"
(working as expected only if the file "D:\Data\demo.jpg" exists)
Actual result:
--------------
Actually the PHP developer can fix this bug by changing the upload
line
@move_uploaded_file($f,"../data/demo.jpg");
by
@move_uploaded_file($f,dirname($_SERVER["SCRIPT_FILENAME"])."/../data/demo.jpg");
note that if the directory D:\Data
does not exists, the function will place the file properly into
D:\Web\data
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=32644&edit=1