在 ubuntu 中启用 php-curl 功能



我正在尝试在 php 中使用 curl 的东西。

我阅读了有关使用 CURLOPT_VERBOSE 来帮助调试的信息。但它没有给出任何输出。我检查了我的phpinfo()和cURL立场:

debug => no

我想这就是这里的问题。如何将其设置为是?我查看了php.ini并可以找到它。

谷歌也没有运气。这里也没有运气: 如何启用 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确实在浏览器中看到了该输出,但仍然没有来自 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

希望有帮助。

最新更新