#48207 [Asn->Csd]: CURLOPT_FILE behaves unexpectedly with invalid file handle
| From: | iliaa@php.net | Date: | Thu, 21 May 2009 12:53:35 +0000 |
| Subject: | #48207 [Asn->Csd]: CURLOPT_FILE behaves unexpectedly with invalid file handle | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-137602@lists.php.net to get a copy of this message | ||
ID: 48207
Updated by: iliaa@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] jani@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