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