From:             tck at tcknetwork dot com
Operating system: WinXP(SP2)
PHP version:      5.0.4
PHP Bug Type:     *Directory/Filesystem functions
Bug description:  move_uploaded_file() relative path

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 bug report at http://bugs.php.net/?id=32644&edit=1
-- 
Try a CVS snapshot (php4):   http://bugs.php.net/fix.php?id=32644&r=trysnapshot4
Try a CVS snapshot (php5.0): 
http://bugs.php.net/fix.php?id=32644&r=trysnapshot50
Try a CVS snapshot (php5.1): 
http://bugs.php.net/fix.php?id=32644&r=trysnapshot51
Fixed in CVS:                http://bugs.php.net/fix.php?id=32644&r=fixedcvs
Fixed in release:            http://bugs.php.net/fix.php?id=32644&r=alreadyfixed
Need backtrace:              http://bugs.php.net/fix.php?id=32644&r=needtrace
Need Reproduce Script:       http://bugs.php.net/fix.php?id=32644&r=needscript
Try newer version:           http://bugs.php.net/fix.php?id=32644&r=oldversion
Not developer issue:         http://bugs.php.net/fix.php?id=32644&r=support
Expected behavior:           http://bugs.php.net/fix.php?id=32644&r=notwrong
Not enough info:             
http://bugs.php.net/fix.php?id=32644&r=notenoughinfo
Submitted twice:             
http://bugs.php.net/fix.php?id=32644&r=submittedtwice
register_globals:            http://bugs.php.net/fix.php?id=32644&r=globals
PHP 3 support discontinued:  http://bugs.php.net/fix.php?id=32644&r=php3
Daylight Savings:            http://bugs.php.net/fix.php?id=32644&r=dst
IIS Stability:               http://bugs.php.net/fix.php?id=32644&r=isapi
Install GNU Sed:             http://bugs.php.net/fix.php?id=32644&r=gnused
Floating point limitations:  http://bugs.php.net/fix.php?id=32644&r=float
No Zend Extensions:          http://bugs.php.net/fix.php?id=32644&r=nozend
MySQL Configuration Error:   http://bugs.php.net/fix.php?id=32644&r=mysqlcfg

Reply via email to