ID: 30924
Comment by: alex at mintpixels dot com
Reported By: himself at zhwau dot net
Status: No Feedback
Bug Type: Filesystem function related
Operating System: Windows XP
PHP Version: 5.0.2
New Comment:
oops - hit tab then space, so it submitted before I was done:
if (move_uploaded_file($_FILES['worksheet_new']['tmp_name'],$location))
{
echo "Success";
} else {
echo "Failure";
}
This prints the warning message, then "Success" when executed.
Previous Comments:
------------------------------------------------------------------------
[2006-12-01 04:27:36] alex at mintpixels dot com
I have created a simple test case:
<html><body><form method='POST' action='testUpload.php'
accept-charset="UTF-8" enctype="multipart/form-data">
<input type='hidden' name='MAX_FILE_SIZE' value="300000000"/>
<input type='file' name='worksheet_new'/><br/>
<input type='submit' value='submit'/>
</body>
</html>
posts to
<?php
$location="<path to my directory>";
if (move_uploaded_file($_FILES['worksheet_new']['tmp_name'],$location))
{
}
------------------------------------------------------------------------
[2006-12-01 04:17:49] alex at mintpixels dot com
I can also confirm that this is a problem in 5.2.0.
I am using move_uploaded_file to move a file from /tmp/<tmpname> to
<docroot>/worksheets/3.jpg
On the initial upload, I get no openbase_dir message, and the file
writes successfully and the function returns true (as I expected).
On the second upload to the file (where the file exists already), I get
an openbase_dir error message in the error log and the file does not
write successfully, but the function still returns a true value anyway
(not as expected).
I have also witnessed a case where I get no openbase_dir message and
the new file writes successfully.
I verified this by checking the file size had changed between requests
(as I had uploaded a different file), which it had. But I am now
unable to reproduce that problem.
In all cases however the function is returning true.
I am using PHP 5.2.0 on Apache 2.0.59 on Linux 2.6.9-42.0.2.ELsmp i686
athlon i386 GNU/Linux.
The permissions of the directory/file are clearly correct because the
first upload is writing correctly. I have also verified the
permissions independently by doing
$h=fopen("$docroot/worksheets/3.jpg"); fwrite($h,"test"); fclose($h);
The file is created and contains the line as expected.
--------------------------------------------------------
In line with the guidelines, I have downloaded the latest build from
CVS, and the following behaviour has changed.
I now get an open_basedir warning message on the initial upload in the
log, but the file is written anyway, and the function still returns
true.
the same behaviour persists with the second upload.
------------------------------------------------------------------------
[2005-02-19 01:00:21] php-bugs at lists dot php dot net
No feedback was provided for this bug for over a week, so it is
being suspended automatically. If you are able to provide the
information that was originally requested, please do so and change
the status of the bug back to "Open".
------------------------------------------------------------------------
[2005-02-11 23:20:52] [EMAIL PROTECTED]
Please try using this CVS snapshot:
http://snaps.php.net/php5-STABLE-latest.tar.gz
For Windows:
http://snaps.php.net/win32/php5.0-win32-latest.zip
------------------------------------------------------------------------
[2004-12-27 09:33:38] himself at zhwau dot net
An update on the problem:
Seems that using copy() to move the file DOES work as expected (ie, as
move_uploaded_file is supposed to work). What move_uploaded_file() did
first time round is move the uploaded file not to the current path
(from where the script is running) but rather to the server root
directory - in my case, being something like C:\Progs\Apache2.
Is this a design feature for this function?
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
http://bugs.php.net/30924
--
Edit this bug report at http://bugs.php.net/?id=30924&edit=1