Curl返回结果但php没有

时间:2018-04-10 14:34:29

标签: php curl php-curl

我发现了非常有趣的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更改超时,但没有帮助。

1 个答案:

答案 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);