我们正在尝试调试服务器上的一些 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_VERBOSE TRUE 输出详细信息。将输出写入 STDERR CURLOPT_STDERR将错误输出到而不是 STDERR 的替代位置。
这也不是权限问题,我已在服务器端将文件和脚本权限设置为 777,而我的本地客户端是 Windows,并且从不关心权限设置(无论如何它仅适用于开发人员)。