我正在尝试使用curl中的curl。
我读过有关使用CURLOPT_VERBOSE来帮助调试的内容。 但它没有输出。我检查了我的phpinfo()并在cURL下面:
debug => no
我想这就是问题所在。我该如何设置为是? 我查看了php.ini,可以找到它。
谷歌也没有运气。 这里也没有运气:How to enable features for php-curl
我希望有人可以帮助我!
答案 0 :(得分: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
我做在浏览器中看到该输出,但仍然没有来自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
希望有所帮助。