我正在尝试在 php 中使用 curl。
我阅读了有关使用 CURLOPT_VERBOSE 来帮助调试的信息。但它没有输出。我检查了我的 phpinfo() 并在 cURL 下表示:
debug => no
我想这就是这里的问题。如何将其设置为是?我查看了 php.ini 并且可以找到它。
谷歌也没有运气。这里也没有运气:如何启用 php-curl 的功能
我希望有一个人可以帮助我!
我正在尝试在 php 中使用 curl。
我阅读了有关使用 CURLOPT_VERBOSE 来帮助调试的信息。但它没有输出。我检查了我的 phpinfo() 并在 cURL 下表示:
debug => no
我想这就是这里的问题。如何将其设置为是?我查看了 php.ini 并且可以找到它。
谷歌也没有运气。这里也没有运气:如何启用 php-curl 的功能
我希望有一个人可以帮助我!
设置的工作不需要具有 cURL 的调试版本CURLOPT_VERBOSE
,但默认情况下,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
浏览器中看到了该输出,但 cURL 仍然没有任何内容,所以我知道句柄是有效的。$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
希望有帮助。