我正在尝试在curl中使用php。在ubuntu中启用php-curl功能
我读了关于使用CURLOPT_VERBOSE来帮助调试。 但它没有输出。我检查了我的phpinfo()和cURL标准下:
debug => no
我想这就是问题了。我怎样才能设置这是肯定的? 我看着php.ini,可以找到它。
也没有在谷歌的运气。 这里也没有运气:How to enable features for php-curl
我希望有人能帮助我!
我正在尝试在curl中使用php。在ubuntu中启用php-curl功能
我读了关于使用CURLOPT_VERBOSE来帮助调试。 但它没有输出。我检查了我的phpinfo()和cURL标准下:
debug => no
我想这就是问题了。我怎样才能设置这是肯定的? 我看着php.ini,可以找到它。
也没有在谷歌的运气。 这里也没有运气:How to enable features for php-curl
我希望有人能帮助我!
如果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
希望有所帮助。