使 cURL 将 STDERR 输出到文件(或字符串)
我们正在尝试调试服务器上的一些 cURL 错误,我希望看到 STDERR 日志。目前,我们所能看到的只是“错误代码:7”,并且我们无法连接到目标服务器。我们已经联系了主机并制定了特殊规则来打开我们需要的端口,我们甚至暂时忽略了证书。
但是,我们仍然无法连接。我需要调试它,但我看不到任何相关信息。
我认为,提到“VERBOSE”和“STDERR”的台词是最重要的。不会将任何内容写入$curl_log。我做错了什么?按照手册的逻辑,这应该是正确的...
正在使用的 PHP:
<?php
$curl = curl_init();
$curl_log = fopen("curl.txt", 'w');
$url = "http://www.google.com";
curl_setopt_array($curl, array(
CURLOPT_URL => $url, // Our destination URL
CURLOPT_VERBOSE => 1, // Logs verbose output to STDERR
CURLOPT_STDERR => $curl_log, // Output STDERR log to file
CURLOPT_SSL_VERIFYPEER => 0, // Do not verify certificate
CURLOPT_FAILONERROR => 0, // true to fail silently for http requests > 400
CURLOPT_RETURNTRANSFER => 1 // Return data received from server
));
$output = fread($curl_log, 2048);
echo $output; // This returns nothing!
fclose($curl_log);
$response = curl_exec($curl);
//...restofscript...
?>
从 PHP 手册: http://php.net/manual/en/function.curl-setopt.php
CURLOPT_VERBOSETRUE 可输出详细信息。将输出写入 STDERR CURLOPT_STDERR 将错误输出到的备用位置,而不是 STDERR。
这也不是权限问题,我已经在服务器端将文件和脚本权限设置为777,我的本地客户端是Windows,并且从不关心权限设置(无论如何,它仅适用于dev)。