From: miccots at gmail dot com
Operating system: All
PHP version: 5.2.4
PHP Bug Type: *General Issues
Bug description: ftp_size() of big files
Description:
------------
Hello.
Function ftp_size() woks strange for files which size is mjre then 2^16
bytes.
When checking size after uploading it returns -1. But if close and open
connection it returns the correct result (after sprintf('%u', $size));
So, this function could not determine size of big file until reconnect.
Reproduce code:
---------------
<?php
$start_time = microtime(TRUE);
$ftp_ip = 'ftp_ip';
$local_file = 'local_file.fil';
$remote_file = 'file_1.fil';
$conn = ftp_connect($ftp_ip, 21);
ftp_login($conn, 'anonymous','[EMAIL PROTECTED]');
ftp_pasv($conn, TRUE);
echo "\n Time spent: ".(microtime(TRUE) - $start_time)."s... Trying to
upload ".sprintf('%u', filesize($local_file))." bytes.\n";
echo "\n Time spent: ".(microtime(TRUE) - $start_time)."s... 1st attempt:
ftp_put_returned: ".(ftp_put($conn, $remote_file, $local_file,
FTP_BINARY)?'TRUE':'FALSE')."\n";
echo "\n Time spent: ".(microtime(TRUE) - $start_time)."s... Size of
uploaded file before reconnect: ".sprintf('%u', ftp_size($conn,
$remote_file))." (".ftp_size($conn, $remote_file).") bytes\n";
echo "\nReconnect...\n";
ftp_close($conn);
$conn = ftp_connect($ftp_ip, 21);
ftp_login($conn, 'anonymous','[EMAIL PROTECTED]');
ftp_pasv($conn, TRUE);
echo "\n Time spent: ".(microtime(TRUE) - $start_time)."s... Size of
uploaded file after reconnect: ".sprintf('%u', ftp_size($conn,
$remote_file))." (".ftp_size($conn, $remote_file).") bytes\n";
ftp_close($conn);
?>
Actual result:
--------------
Time spent: 0.01035213470459s... Trying to upload 3532439032 bytes.
Time spent: 0.010672092437744s... 1st attempt: ftp_put_returned: FALSE
Time spent: 661.11731815338s... Size of uploaded file before reconnect:
4294967295 (-1) bytes
Reconnect...
Time spent: 661.12095808983s... Size of uploaded file after reconnect:
3532439032 (-762528264) bytes
--
Edit bug report at http://bugs.php.net/?id=43211&edit=1
--
Try a CVS snapshot (PHP 4.4):
http://bugs.php.net/fix.php?id=43211&r=trysnapshot44
Try a CVS snapshot (PHP 5.2):
http://bugs.php.net/fix.php?id=43211&r=trysnapshot52
Try a CVS snapshot (PHP 5.3):
http://bugs.php.net/fix.php?id=43211&r=trysnapshot53
Try a CVS snapshot (PHP 6.0):
http://bugs.php.net/fix.php?id=43211&r=trysnapshot60
Fixed in CVS: http://bugs.php.net/fix.php?id=43211&r=fixedcvs
Fixed in release:
http://bugs.php.net/fix.php?id=43211&r=alreadyfixed
Need backtrace: http://bugs.php.net/fix.php?id=43211&r=needtrace
Need Reproduce Script: http://bugs.php.net/fix.php?id=43211&r=needscript
Try newer version: http://bugs.php.net/fix.php?id=43211&r=oldversion
Not developer issue: http://bugs.php.net/fix.php?id=43211&r=support
Expected behavior: http://bugs.php.net/fix.php?id=43211&r=notwrong
Not enough info:
http://bugs.php.net/fix.php?id=43211&r=notenoughinfo
Submitted twice:
http://bugs.php.net/fix.php?id=43211&r=submittedtwice
register_globals: http://bugs.php.net/fix.php?id=43211&r=globals
PHP 3 support discontinued: http://bugs.php.net/fix.php?id=43211&r=php3
Daylight Savings: http://bugs.php.net/fix.php?id=43211&r=dst
IIS Stability: http://bugs.php.net/fix.php?id=43211&r=isapi
Install GNU Sed: http://bugs.php.net/fix.php?id=43211&r=gnused
Floating point limitations: http://bugs.php.net/fix.php?id=43211&r=float
No Zend Extensions: http://bugs.php.net/fix.php?id=43211&r=nozend
MySQL Configuration Error: http://bugs.php.net/fix.php?id=43211&r=mysqlcfg