ID: 48207 Updated by: il...@php.net Reported By: mark at dynom dot nl -Status: Assigned +Status: Closed Bug Type: cURL related Operating System: * PHP Version: 5.*, 6CVS (2009-05-09) Assigned To: pajoye New Comment:
This bug has been fixed in CVS. Snapshots of the sources are packaged every three hours; this change will be in the next snapshot. You can grab the snapshot at http://snaps.php.net/. Thank you for the report, and for helping us make PHP better. Previous Comments: ------------------------------------------------------------------------ [2009-05-10 17:04:17] j...@php.net Thanks. That means it exists also in PHP_5_2. (That's why I asked..) ------------------------------------------------------------------------ [2009-05-10 08:17:08] mark at dynom dot nl Tried it, but I don't get a notice, warning or error. I'm testing with this roughly-edged test case: http://pastebin.com/f21c6a4e4 ------------------------------------------------------------------------ [2009-05-09 14:03:57] mark at dynom dot nl Sorry, the expected result is not 'works', it's an error being raised. ------------------------------------------------------------------------ [2009-05-09 14:01:55] mark at dynom dot nl Description: ------------ The option 'CURLOPT_FILE' takes a file handle as argument, however when you open the file read-only. cURL *silently* fails and downloads only 1 successful iteration of data. This *only* happens when CURLOPT_RETURNTRANSFER is not defined, since that disables the 'CURLOPT_FILE' feature. It's expected that some sort of warning/error is raised, just like when a write flag is set when the file is not writable. When the latter happens, cURL falls back on CURLOPT_RETURNTRANSFER = false. Reproduce code: --------------- <?php error_reporting( E_ALL ); $ch = curl_init('http://kernel.org/pub/linux/kernel/v1.0/linux-1.0.tar.bz2'); $fp = fopen("/tmp/fubar", "r"); // Opening 'fubar' with the incorrect readonly flag curl_setopt($ch, CURLOPT_FILE, $fp); curl_exec($ch); // Debug $info = curl_getinfo($ch); if ($info['size_download'] !== $info["download_content_length"]) { echo 'fail'; } else { echo 'works'; } curl_close($ch); Expected result: ---------------- works Actual result: -------------- fail ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=48207&edit=1