php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #35913 Upload Corrupted
Submitted: 2006-01-06 01:22 UTC Modified: 2006-01-06 03:14 UTC
From: ben at mattersolutions dot com Assigned:
Status: Not a bug Package: Apache2 related
PHP Version: 5.1.1 OS: RHEL3 (x86_64)
Private report: No CVE-ID: None
 [2006-01-06 01:22 UTC] ben at mattersolutions dot com
Description:
------------
Please forgive the large amount of text... most of it is contents of the file that is uploaded and corrupted to show you what is going wrong.

Details and scripts in full at...
http://www.phpbuilder.com/board/showthread.php?t=10314484

We've recently built a new box with the following specs: RHEL 3, Apache 2.0.46, PHP 5.1.1

The problem is that the upload is being corrupted during the upload. To test it we uploaded a simple text file with line numbers in, begins....

1this is a test this is a test this is a test this is a test
2this is a test this is a test
3this is a test this is a test this is a test this is a test this is a test this is a test
4this is a test this is a test this is a test this is a test
5this is a test this is

.. and so on.... for quite alot of line. The php.ini can accept a large upload (8M), that is the only change in the php.ini (although register_globals is on too)

When the upload file is moved from the tmp_name to the correct location it is corrupted, see below. The lines are duplicated and there is a weird header at line 20.

We've tried it with difference browsers and get the same results. MSIE on Win and Mac, Mozilla on Linux and Safari on Mac all with the same result. The upload script is very basic and just prints the $_FILES array if any error or uses move_uploaded_file().... We tested this function seperately and it moves files fine.

1this is a test this is a test this is a test this is a test
2this is a test this is a test
3this is a test this is a test this is a test this is a test this is a test this is a test
4this is a test this is a test this is a test this is a test
5this is a test this is a test
6this is a test this is a test this is a test this is a test this is a test this is a test
7this is a test this is a test this is a test this is a test
8this is a test this is a test
9this is a test this is a test this is a test this is a test this is a test this is a test
10this is a test this is a test this is a test this is a test
11this is a test this is a test
12this is a test this is a test this is a test this is a test this is a test this is a test
13this is a test this is a test this is a test this is a test
14this is a test this is a test
15this is a test this is a test this is a test this is a test this is a test this is a test
16this is a test this is a test this is a test this is a test
17this is a test this is a test
18this is a test this is a test this is a test this is a test this is a test this is a test
19this is a test this is a test this is a test this is a test
2-----------------------------7d51f8756021a
Content-Disposition: form-data; name="image_file"; filename="C:\Documents and Settings\XXXXXX\My Documents\matter solutions\clients\XXXXXX\testfile.txt"
Content-Type: text/plain

1this is a test this is a test this is a test this is a test
2this is a test this is a test
3this is a test this is a test this is a test this is a test this is a test this is a test
4this is a test this is a test this is a test this is a test
5this is a test this is a test
6this is a test this is a test this is a test this is a test this is a test this is a test
7this is a test this is a test this is a test this is a test
8this is a test this is a test
9this is a test this is a test this is a test this is a test this is a test this is a test
10this is a test this is a test this is a test this is a test
11this is a test this is a test
12this is a test this is a test this is a test this is a test this is a test this is a test
13this is a test this is a test this is a test this is a test
14this is a test this is a test
15this is a test this is a test this is a test this is a test this is a test this is a test
16this is a test this is a test this is a test this is a test
17this is a test this is a test
18this is a test this is a test this is a test this is a test this is a test this is a test
19this is a test this is a test this is a test this is a test
20this is a test this is a test
21this is a test this is a test this is a test this is a test this is a test this is a test
22this is a test this is a test this is a test this is a test
23this is a test this is a test
24this is a test this is a test this is a test this is a test this is a test this is a test
25this is a test this is a test this is a test this is a test
26this is a test this is a test
27this is a test this is a test this is a test this is a test this is a test this is a test
28this is a test this is a test this is a test this is a test
29this is a test this is a test
30this is a test this is a test this is a test this is a test this is a test this is a test
31this is a test this is a test this is a test this is a test
32this is a test this is a test
33this is a test this is a test this is a test this is a test this is a test this is a test
34this is a test this is a test this is a test this is a test
35this is a test this is a test
36this is a test this is a test this is a test this is a test this is a test this is a test
37this is a test this is a test this is a test this is a test
38this is a test this is a test
39this is a test this is a test this is a test this is a test this is a test this is a test
40this is a test this is a test this is a test this is a test
41this is a test this is a test
42this is a test this is a test this is a test this is a test t0this is a test this is a test
21this is a test this is a test this is a test this is a test this is a test this is a test
22this is a test this is a test this is a test this is a test
23this is a test this is a test
24this is a test this is a test this is a test this is a test this is a test this is a test
25this is a test this is a test this is a test this is a test
26this is a test this is a test
27this is a test this is a test this is a test this is a test this is a test this is a test
28this is a test this is a test this is a test this is a test
29this is a test this is a test
30this is a test this is a test this is a test this is a test this is a test this is a test
31this is a test this is a test this is a test this is a test
32this is a test this is a test
33this is a test this is a test this is a test this is a test this is a test this is a test
34this is a test this is a test this is a test this is a test
35this is a test this is a test
36this is a test this is a test this 

Reproduce code:
---------------
<?php
if($_POST["action"] == "Upload Image") {
  unset($imagename);
  if(!isset($_FILES) && isset($HTTP_POST_FILES))
  $_FILES = $HTTP_POST_FILES;
  if(!isset($_FILES['image_file']))
  $error["image_file"] = "An image was not found.";
  $imagename = basename($_FILES['image_file']['name']);
  if(empty($imagename))
    $error["imagename"] = "The name of the image was not found.";
  if(empty($error)) {
  $newimage = "" . $imagename;
  $result = @move_uploaded_file($_FILES['image_file']['tmp_name'], $newimage);
  if(empty($result)) {
    $error["result"] = "There was an error moving the uploaded file.";
    print_r($_FILES);
  } else 
    echo "<img src='".$newimage."' border=0>";
  }
}
?>
<form method="POST" enctype="multipart/form-data" name="image_upload_form" action="<?php $_SERVER["PHP_SELF"];?>">
<p><input type="file" name="image_file" size="20"></p>
<p><input type="submit" value="Upload Image" name="action"></p>
</form>
<?php
if(is_array($error)) 
  while(list($key, $val) = each($error))
    echo $val."<br>\n";
?>


Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2006-01-06 01:32 UTC] tony2001@php.net
Please try using this CVS snapshot:

  http://snaps.php.net/php5.1-latest.tar.gz
 
For Windows:
 
  http://snaps.php.net/win32/php5.1-win32-latest.zip


 [2006-01-06 02:25 UTC] ben at mattersolutions dot com
Tried the snapshot and get the same result.

There are some files on this URL to help you see what happens.

http://php5.saturn.mattersolutions.com/

- ReadMe.txt...

1. Download testfile_should_look_like_this.txt
2. Rename to testfile.txt
3. Upload using test-upload.php script
4. View testfile.txt and compare with testfile_should_look_like_this.txt
5. They aren't the same :(
 [2006-01-06 03:14 UTC] sniper@php.net
Use the apache2handler which actually works (--with-apxs2)
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Fri May 03 15:01:31 2024 UTC