php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #34822 PHP writing empty files
Submitted: 2005-10-11 03:08 UTC Modified: 2005-10-14 07:16 UTC
From: jshay at dakotacom dot net Assigned:
Status: Not a bug Package: Unknown/Other Function
PHP Version: 4.4.0 OS: RedHat Enterprise 3.0
Private report: No CVE-ID: None
 [2005-10-11 03:08 UTC] jshay at dakotacom dot net
Description:
------------
A simple upload script uploads the file, fully intact, but then a few seconds later zero's out the file making a zero byte length file.

Reproduce code:
---------------
<?
        $size = exec("ls -l $upload_item");
        if ($upload_item) {
                print("<br />uploading to section = $section\n");
                print("<br />file name = $upload_item_name\n");
                print("<br />file size = $upload_item_size bytes\n");
                print("<br />file in tmp = $size\n");
                if (copy ($upload_item, "./$upload_item_name")) {
                        print("<html><body>\n");
                        print("<p><b>your file was successfully uploaded!</b></p>\n");
                        print("<p>\n");
                        print("please note your file name - <b>$upload_item_name</b>\n");
                        print("<br />you will need to enter it in the appropriate form.\n");
                        print("</p>\n");
                        print("</body></html>");
                } else {
                        print("can't be copied - there may be another file with this name\n");
                }
        }
?>

Expected result:
----------------
The file should get written to the directory specified from the form and named the same name as the uploaded file.

Actual result:
--------------
Appropriate directories are writable by the apache user/group. Not a quota issue. 'upload_max_filesize' is set to 55 megs. No error log is generated as PHP has, as far as it thinks, written the file.

What happens is the file gets uploaded to /tmp (full permisssions on /tmp) and then copied to the requested directory. I can grab a directory listing and see it in the specified directory in whole - original size and name. If I refresh the page again the file is zero'd out but with the original filename.

I'm hesitant to call this a bug but having bounced this off other contacts in the industry I am left with no choice.

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2005-10-11 04:14 UTC] marcot@php.net
Can you please provide us with a *short* script that consistently reproduces this bug and that we can run? As it is now, you've only provided us with what looks like an excerpt of the script, and if we can't reproduce the issue, we can't tell you if it is a bug or not. Limiting the code to an accurate representation of the problem will help you troubleshoot anything that might be wrong with your code and, if there's something broken with PHP, it will help us isolate it so that we can fix it efficiently.

Thanks!
 [2005-10-12 05:41 UTC] jshay at dakotacom dot net
link to plain text form:
http://www.tucson-wireless.com/form.php.txt

link to plain text form handler:
http://www.tucson-wireless.com/formhandler.php.txt

link to working form:
http://www.tucsom-wireless.com/admin_files.php

link to "working" form handler:
http://www.tucson-wireless.com/admin_files_formhandler.php

Thanks for your help on this.
 [2005-10-12 09:55 UTC] tony2001@php.net
Please try using this CVS snapshot:

  http://snaps.php.net/php4-STABLE-latest.tar.gz
 
For Windows:
 
  http://snaps.php.net/win32/php4-win32-STABLE-latest.zip

Works just fine here.
 [2005-10-14 07:16 UTC] jshay at dakotacom dot net
You may close this ticket out. After reviewing this I discovered that the user that Apache runs, nobody, was over quota. I initially only looked at the user of the vhost that was having the problem.

I do apologize for wasting your time.
 
PHP Copyright © 2001-2025 The PHP Group
All rights reserved.
Last updated: Mon Jul 14 02:01:32 2025 UTC