【原创】PHP Curl报错:Couldn't resolve host "XXXXXX" 解决方法

blogdaren 2016-06-14 抢沙发 6029人次

问题背景

在PHP脚本中使用Curl系列的函数GET某资源地址, 结果报错:Couldn't resolve host "ip.taobao.com"

PHP代码

public function actionDemo()
{    
    $url = "http://ip.taobao.com";
    $rs = Helper_Tool::curlGet($url);     
    var_dump($rs);                                       
}

问题原因

1.  问题最终出在 ipv6 上

2.  附:已确保主机的DNS 以及 hosts均无问题

3.  附:使用如下代码禁用DNS缓存或者禁用IPv6均无济于事:

curl_setopt($ch, CURLOPT_DNS_USE_GLOBAL_CACHE, false ); 
curl_setopt($ch, CURLOPT_DNS_CACHE_TIMEOUT, 2 );
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 );

解决方法

从系统层面禁用 IPv6 模块

禁用IPv6

[root@developer css]# vi /etc/modprobe.d/dist.conf

#添加下面两行内容,保存退出后并重新启动系统
alias net-pf-10 off
alias ipv6 off

#验证IPv6模块是否加载
lsmod|grep ipv6

#开机禁用IPv6
chkconfig ip6tables off

版权声明:除非注明,本文由( blogdaren )原创,转载请保留文章出处。

本文链接:【原创】PHP Curl报错:Couldn't resolve host "XXXXXX" 解决方法

发表评论:

您的昵称:
电子邮件:
个人主页: