From:             
Operating system: Ubuntu 10.04
PHP version:      5.3.2
Package:          Apache related
Bug Type:         Bug
Bug description:PHP5 under Apache2 on 64 bit system is not completely 64 bit

Description:
------------
Something in PHP5 running under apache2 under Ubuntu 9.10 is not fully 64
bit 

aware on a 64 bit system. PHP scripts run under Apache correctly under
Ubuntu 

8.04 (PHP 5.2.4). Under Ubuntu 9.10 (PHP 5.2.10) and 10.04 (PHP 5.3.2),
some 

place a value is being treated as 32 bits on a 64 bit system and is
wrapping 

instead of using full 64 bits. Related to sending large data (> 4G) in
response 

to an HTTP post request.



Did not test with Ubuntu 8.10 or 9.04 - both PHP 5.2.6.



What happens: Data aborts based on wrap. Calculated number of bytes to be
served 

are correct (>4G) as listed in the HTTP length header. Actual bytes served
are 

(size) && 0xFFFFFFFF instead of (size) && 0xFFFFFFFFFFFFFFFF on 64 bit
system.



Most of data is being transfered via fpassthru($openFileHandle) call,
providing 

>4G bytes of data.

Test script:
---------------
<?php 

    header("Connection: close");

// NOTE:  File test.txt needs to be more than 2^32 bytes.  Pick a large
file, over 0x100000000 bytes 

//        in size, such as
http://cdimage.debian.org/debian-cd/5.0.4/amd64/iso-dvd/debian-504-amd64-DVD-1.iso


    $name = "/var/www/test.txt";

    $fs = filesize($name);

    $fp = fopen($name,'rb');

    $httpByteLen = $fs;

    header("Connection: close");

    header("Content-Type: application/octet-stream");

    header("Content-Length: " . $httpByteLen);

    header("HTTP/1.1 200 OK");

    set_time_limit(0);

    fpassthru($fp);

    exit;

?>

Expected result:
----------------
The entire ISO file to be downloaded.

Actual result:
--------------
Tested using the test script (attached), and using the suggested debian dvd
.iso 

image as the input file.  The ISO is 4,697,126,912 bytes. Download socket
is 

closed after 402,159,616 bytes, which again is the file size & 0xFFFFFFFF.

-- 
Edit bug report at http://bugs.php.net/bug.php?id=52102&edit=1
-- 
Try a snapshot (PHP 5.2):            
http://bugs.php.net/fix.php?id=52102&r=trysnapshot52
Try a snapshot (PHP 5.3):            
http://bugs.php.net/fix.php?id=52102&r=trysnapshot53
Try a snapshot (trunk):              
http://bugs.php.net/fix.php?id=52102&r=trysnapshottrunk
Fixed in SVN:                        
http://bugs.php.net/fix.php?id=52102&r=fixed
Fixed in SVN and need be documented: 
http://bugs.php.net/fix.php?id=52102&r=needdocs
Fixed in release:                    
http://bugs.php.net/fix.php?id=52102&r=alreadyfixed
Need backtrace:                      
http://bugs.php.net/fix.php?id=52102&r=needtrace
Need Reproduce Script:               
http://bugs.php.net/fix.php?id=52102&r=needscript
Try newer version:                   
http://bugs.php.net/fix.php?id=52102&r=oldversion
Not developer issue:                 
http://bugs.php.net/fix.php?id=52102&r=support
Expected behavior:                   
http://bugs.php.net/fix.php?id=52102&r=notwrong
Not enough info:                     
http://bugs.php.net/fix.php?id=52102&r=notenoughinfo
Submitted twice:                     
http://bugs.php.net/fix.php?id=52102&r=submittedtwice
register_globals:                    
http://bugs.php.net/fix.php?id=52102&r=globals
PHP 4 support discontinued:          http://bugs.php.net/fix.php?id=52102&r=php4
Daylight Savings:                    http://bugs.php.net/fix.php?id=52102&r=dst
IIS Stability:                       
http://bugs.php.net/fix.php?id=52102&r=isapi
Install GNU Sed:                     
http://bugs.php.net/fix.php?id=52102&r=gnused
Floating point limitations:          
http://bugs.php.net/fix.php?id=52102&r=float
No Zend Extensions:                  
http://bugs.php.net/fix.php?id=52102&r=nozend
MySQL Configuration Error:           
http://bugs.php.net/fix.php?id=52102&r=mysqlcfg

Reply via email to