我发现了非常有趣的bug。当我运行cmd时:
curl https://example.com
我看到结果,但是当我运行php脚本时:
$ch = curl_init("https://example.com");
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Error: ' . curl_error($ch) . "\n";
}
curl_close($ch);
echo $result;
我明白了:
错误:操作在10002毫秒后以0字节超时 接收
我试图测试很多选项,但我没有找到一个好的解决方案。
编辑:时间不是问题。我可以在1200s更改超时,但没有帮助。
答案 0 :(得分:0)
按照您在评论中发布的CURLOPT_VERBOSE日志,您不是要尝试连接到example.com,而是尝试连接到www.opentable.com,并且opentable.com不响应请求没有任何User-Agent。它适用于curl cli程序,因为curl cli有一个默认的用户代理,但它不适用于libcurl,因为libcurl默认没有用户代理。设置User-Agent标头以连接到opentable.com。
curl_setopt($ch,CURLOPT_USERAGENT,"libcurl/".curl_version()["version"]." PHP/".PHP_VERSION);