From:             ben at mattersolutions dot com
Operating system: RHEL3 (x86_64)
PHP version:      5.1.1
PHP Bug Type:     Apache2 related
Bug description:  Upload Corrupted

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";
?>


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

Reply via email to