我正在尝试使用CURL获取页面的内容.正在进行提取的页面是https,它尝试提取的页面也是https.我在尝试所有设置时收到错误"无法解析主机".
$c=curl_init();
curl_setopt($c, CURLOPT_URL,$url);
//curl_setopt($c, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:x.x.x) Gecko/20041107 Firefox/x.x");
curl_setopt ($c, CURLOPT_RETURNTRANSFER, TRUE);
//curl_setopt($c, CURLOPT_SSL_VERIFYPEER, TRUE);
//curl_setopt($c, CURLOPT_SSL_VERIFYHOST, TRUE);
curl_setopt($c, CURLOPT_HEADER, FALSE);
$html=curl_exec($c);
if($html === false) {
echo curl_error($c);
}
else {
echo 'Operation completed without any errors';
}
curl_close($c);
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
Sta*_*rer 52
我发现CURL可以决定使用IPv6,在这种情况下它会尝试解析但不会得到IPv6答案(或者那种效果)并超时.
您可以尝试命令行开关-4来测试它.
在PHP中,您可以通过设置以下内容来配置此行:
curl_setopt($_h, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 );
Run Code Online (Sandbox Code Playgroud)
Tec*_*ast 29
我有同样的问题.Coud不解决google.com.php fpm中有一个错误,我正在使用它.重新启动php-fpm为我解决了这个问题.
KB2*_*B22 27
也许是DNS问题?
针对此代码尝试使用您的网址:
$_h = curl_init();
curl_setopt($_h, CURLOPT_HEADER, 1);
curl_setopt($_h, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($_h, CURLOPT_HTTPGET, 1);
curl_setopt($_h, CURLOPT_URL, 'YOUR_URL' );
curl_setopt($_h, CURLOPT_DNS_USE_GLOBAL_CACHE, false );
curl_setopt($_h, CURLOPT_DNS_CACHE_TIMEOUT, 2 );
var_dump(curl_exec($_h));
var_dump(curl_getinfo($_h));
var_dump(curl_error($_h));
Run Code Online (Sandbox Code Playgroud)
小智 5
只是一个可能有用的注意事项 - 我在我的笔记本电脑上遇到了这个问题(在启动后通过wifi连接),并重新启动服务器(连接后)修复了问题.我想在我的情况下,这可能与apache离线启动有关,也许注意到DNS查找失败了?