2012-08-12 32 views
1

我正在尝试在curl中使用php。在ubuntu中启用php-curl功能

我读了关于使用CURLOPT_VERBOSE来帮助调试。 但它没有输出。我检查了我的phpinfo()和cURL标准下:

debug => no 

我想这就是问题了。我怎样才能设置这是肯定的? 我看着php.ini,可以找到它。

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

我希望有人能帮助我!

回答

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看到在浏览器中的输出,但仍然没有从卷曲,所以我知道句柄是有效的。

如果您遇到了同样的问题,这里是一个解决办法:

$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 

希望有所帮助。