在ubuntu中启用php-curl功能

时间:2012-08-12 10:47:10

标签: php ubuntu curl

我正在尝试使用curl中的curl。

我读过有关使用CURLOPT_VERBOSE来帮助调试的内容。 但它没有输出。我检查了我的phpinfo()并在cURL下面:

debug => no

我想这就是问题所在。我该如何设置为是? 我查看了php.ini,可以找到它。

谷歌也没有运气。 这里也没有运气:How to enable features for php-curl

我希望有人可以帮助我!

1 个答案:

答案 0 :(得分:0)

CURLOPT_VERBOSE设置不需要调试版本的cURL,但默认情况下CURLOPT_VERBOSE信息会输出到STDERR,这只能在控制台上看到。因此,如果您从浏览器运行PHP,则不会发送详细的输出。

您可以将选项CURLOPT_STDERR设置为文件句柄,并在那里写入详细输出。

你应该可以这样做:

$stdout = fopen('php://output', 'w+');

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, 'http://www.example.com');
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_STDERR, $stdout);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$data = curl_exec($ch);

我不确定我目前是否遇到PHP错误(通过FastCGI运行PHP 5.4.5)因为我在浏览器中看不到详细的输出,但是如果我从命令行运行它我做。如果我fwrite$stdout在浏览器中看到该输出,但仍然没有来自cURL,所以我知道句柄是有效的。

如果您遇到同样的问题,可以采用以下解决方法:

$tempout = fopen('php://temp', 'w+');

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, 'http://www.example.com');
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_STDERR, $tempout);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$data = curl_exec($ch);

rewind($tempout);
$debug = stream_get_contents($tempout);

echo $debug; // the data from CURLOPT_VERBOSE

希望有所帮助。