我正在用php中的curl尝试一些东西。
我读到过使用CURLOPT_VERBOSE来帮助调试的文章。但是它没有给出任何输出。我检查了我的phpinfo(),在cURL下:
debug => no我想这就是问题所在。如何将其设置为yes?我在php.ini里找了一下,找到了。
在谷歌上也不走运。在这里也不走运:How to enable features for php-curl
我希望有人能帮助我!
发布于 2012-08-18 05:44:13
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 bug (通过FastCGI运行PHP5.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希望这能有所帮助。
https://stackoverflow.com/questions/11921605
复制相似问题