ID:               22517
 Updated by:       [EMAIL PROTECTED]
 Reported By:      [EMAIL PROTECTED]
-Status:           Bogus
+Status:           Closed
 Bug Type:         cURL related
 Operating System: FreeBSD 4.7-(STABLE|RELEASE)
 PHP Version:      4.3.0/4.3.1/4.3.2-dev
 New Comment:

I've developed a quick test using the
http://www.php.net/mirror-test.php

[EMAIL PROTECTED]:/tmp$ php -q test.curlfpisbroken.php
Array
(
)
[EMAIL PROTECTED]:/tmp$ php -v
4.2.1
[EMAIL PROTECTED]:/tmp$ cat test.curlfpisbroken.php
<?php
//
+----------------------------------------------------------------------+
// | PHP version 4.0                                                   
  |
//
+----------------------------------------------------------------------+
// | Copyright (c) 1997, 1998, 1999, 2000, 2001, 2002, 2003 The PHP
Group |
//
+----------------------------------------------------------------------+
// | This source file is subject to version 2.0 of the PHP license,    
  |
// | that is bundled with this package in the file LICENSE, and is     
  |
// | available at through the world-wide-web at                        
  |
// | http://www.php.net/license/2_02.txt.                              
  |
// | If you did not receive a copy of the PHP license and are unable to
  |
// | obtain it through the world-wide-web, please send a note to       
  |
// | [EMAIL PROTECTED] so we can mail you a copy immediately.            
  |
//
+----------------------------------------------------------------------+
// | Authors: Jacques Marneweck <[EMAIL PROTECTED]>                      
  |
//
+----------------------------------------------------------------------+//
// $Id:$

/* Test for php4 to prove that CURLOPT_FILE is broken in PHP 4.3.x
including
 * the 4.3.2-dev (PHP Bug #22517)
 */

$php_url = "http://www.php.net/mirror-info.php";;

$fp = tmpfile();
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $php_url);
curl_setopt($curl, CURLOPT_TIMEOUT, 20);
curl_setopt($curl, CURLOPT_FILE, $fp);
#curl_setopt($curl, CURLOPT_PROXY, "http://192.168.254.14:3128/";);
curl_exec($curl);

$response['http_code'] = curl_getinfo($curl, CURLINFO_HTTP_CODE);

rewind($fp);
while ($str = fgets($fp, 4096)) {
        $pairs .= $str;
}
fclose($fp);

$response['data'] = $pairs;
asort($response);

$expecteddata = explode ("|",
"http://www.php.net/|4.3.0-dev|1047661845|1|2|en");
$datawehave = explode ("|", $response['data']);

$diff = array_diff ($expecteddata, $datawehave);

print_r ($diff);
?>
Okay it the CURLOPT_FILE works nicely on php 4.2.1 :)

Now testing 4.3.0:
Array
(
    [0] => http://www.php.net/
    [1] => 4.3.0-dev
    [2] => 1047661845
    [3] => 1
    [4] => 2
    [5] => en
)
[EMAIL PROTECTED]:~/test# php -v
PHP 4.3.0 (cli) (built: Feb 19 2003 13:51:54)
Copyright (c) 1997-2002 The PHP Group
Zend Engine v1.3.0, Copyright (c) 1998-2002 Zend Technologies
    with Zend Optimizer v2.1.0, Copyright (c) 1998-2003, by Zend
Technologies

Now going to test the latest stable build:
Looks like Ilia Alshanetsky's patch to ext/curl/interface.c yesterday
fixes my issues :)

su-2.05b# ./php -v
PHP 4.3.2-RC (cli) (built: Mar 14 2003 19:43:26)
Copyright (c) 1997-2003 The PHP Group
Zend Engine v1.3.0, Copyright (c) 1998-2003 Zend Technologies
    with Zend Optimizer v2.1.0, Copyright (c) 1998-2003, by Zend
Technologies
su-2.05b# ./php -q test.curlfpisborken.php
Array
(
)

Thanks Ilia Alshanetsky :)


Previous Comments:
------------------------------------------------------------------------

[2003-03-03 19:02:59] [EMAIL PROTECTED]

Apart from (b) with the SSL stuff, part (a) where $fp does not get
anything from the CURL session for example if I do something like
following, $fp does not get any data using the CURLOPT_FILE setopt
setting:

<?php
$saix_url = "http://isp.saix.net/cgi-bin/ISPUserHistory.pl";;

$fp = tmpfile();
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $saix_url);
curl_setopt($curl, CURLOPT_TIMEOUT, 2000);
curl_setopt($curl, CURLOPT_FILE, $fp);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
curl_setopt($curl, CURLOPT_USERPWD, $saix['login']);
curl_setopt($curl, CURLOPT_PROXY, "http://192.168.253.14:3128/";);
curl_exec($curl);
curl_close($curl);

Adding the following option and adding a
$get_ouptut_since_fp_contains_no_data = in front of the curl_exec call
seems to get the data that $fp should have contained.

$fp = tmpfile();
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $saix_url);
curl_setopt($curl, CURLOPT_TIMEOUT, 2000);
curl_setopt($curl, CURLOPT_FILE, $fp);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
curl_setopt($curl, CURLOPT_USERPWD, $saix['login']);
curl_setopt($curl, CURLOPT_PROXY, "http://192.168.253.14:3128/";);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$get_output_since_fp_contains_no_data = curl_exec($curl);
curl_close($curl);

...

I'm going to play around with the curl extension and see if I can come
up with a patch to fix the CURLOPT_FILE stuff.

------------------------------------------------------------------------

[2003-03-03 17:18:15] [EMAIL PROTECTED]

Not a PHP bug but a feature of the new version of libcurl.

As Daniel pointed out have a look at:

http://curl.haxx.se/docs/sslcerts.html

------------------------------------------------------------------------

[2003-03-03 17:13:53] daniel at haxx dot se

http://curl.haxx.se/docs/sslcerts.html

------------------------------------------------------------------------

[2003-03-03 14:46:14] [EMAIL PROTECTED]

Still same problems with the latest php4 STABLE which I downloaded this
afternoon.

[EMAIL PROTECTED]:/usr/local/src/php4-STABLE-200303031230/sapi/cli# ./php
-v
PHP 4.3.2-dev (cli) (built: Mar  3 2003 21:54:28)
Copyright (c) 1997-2003 The PHP Group
Zend Engine v1.3.0, Copyright (c) 1998-2003 Zend Technologies
    with Zend Optimizer v2.1.0, Copyright (c) 1998-2003, by Zend
Technologies

------------------------------------------------------------------------

[2003-03-03 13:35:24] [EMAIL PROTECTED]

Busy building the latest stable which I downloaded earlier today.  Will
keep you guys posted on the status.

------------------------------------------------------------------------

The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
    http://bugs.php.net/22517

-- 
Edit this bug report at http://bugs.php.net/?id=22517&edit=1

Reply via email to