php curl报错:Couldn't resolve host "XXXXXX" 解决方法

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

问题背景:

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

#开机不启动
chkconfig ip6tables off

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

本文链接:php curl报错:Couldn't resolve host "XXXXXX" 解决方法

发表评论:

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