卷曲 returns 结果但 php 没有
Curl returns result but php doesn't
我发现了一个非常有趣的错误。当我 运行 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;
我明白了:
Error: Operation timed out after 10002 milliseconds with 0 bytes
received
我尝试了很多选项,但没有找到好的解决方案。
编辑:时间不是问题。我可以更改 1200s 的超时,但没有帮助。
根据您在评论中发布的 CURLOPT_VERBOSE 日志,您不是在尝试连接到 example.com ,而是在尝试连接到 www.opentable.com ,并且 opentable.com 不响应没有任何 User-Agent 的请求。它适用于 curl cli 程序,因为 curl cli 有一个默认值 user-agent,但它不适用于 libcurl,因为 libcurl 默认没有 user-agent。设置 User-Agent header 连接到 opentable.com.
curl_setopt($ch,CURLOPT_USERAGENT,"libcurl/".curl_version()["version"]." PHP/".PHP_VERSION);
我发现了一个非常有趣的错误。当我 运行 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;
我明白了:
Error: Operation timed out after 10002 milliseconds with 0 bytes received
我尝试了很多选项,但没有找到好的解决方案。
编辑:时间不是问题。我可以更改 1200s 的超时,但没有帮助。
根据您在评论中发布的 CURLOPT_VERBOSE 日志,您不是在尝试连接到 example.com ,而是在尝试连接到 www.opentable.com ,并且 opentable.com 不响应没有任何 User-Agent 的请求。它适用于 curl cli 程序,因为 curl cli 有一个默认值 user-agent,但它不适用于 libcurl,因为 libcurl 默认没有 user-agent。设置 User-Agent header 连接到 opentable.com.
curl_setopt($ch,CURLOPT_USERAGENT,"libcurl/".curl_version()["version"]." PHP/".PHP_VERSION);