首页 > W3C Lab > PHP > PHP cURL Could not resolve host的问题
2015
07-22

PHP cURL Could not resolve host的问题

先说昨天下午,重新用cURL去签到17wo,第一步卡在这了

curl_setopt($ch1, CURLOPT_URL, "http://17wo.cn/Login.action");

开始是没反应,我想这是哪错了呢?

$cu_error = curl_error( $ch1 );

检查一下错误结果返回是 Could not resolve host: wap.17wo.cn

我这一想,是cURL无法解析服务器咯?那我用SSH到主机上直接curl一下其他网站,发现没有问题,

第二种可能就是PHP出问题咯?那我用fopen打开一个其他网站试试,也没有问题啊,这说明出问题的就只是PHP中的cURL模块,那么究竟是哪里配置出问题了呢?开始我想是不是IPv6的事情,于是加了一行

curl_setopt($ch1, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);

问题依旧,那么google一下吧,发现也有类似状况,有的说是php对旧版的curl支持不好,那我 phpinfo() 一下看我PHP是 Version 5.5.9-1ubuntu4.11 cURL是7.35.0 那么然并卵

幸好我的PHP能解析域名,一个妥协的办法就是这样

$ip = gethostbyname('17wo.cn');
var_dump($ip);

用PHP自带的函数先把域名ip解析了,然后返回,但是有一些302的头部返回的Location还得拼接好麻烦啊 Fuck!这是比我学习正则啊

——————————2015年8月14日 16:30:03 增加————————————

目前已经会正则了,不过正则在各种语言里实现都不一样,好烦那

这个curl无法解析域名的问题简直搞死我了,先用用

tcpdump -c [行数] -w [输出文件]

dump出来的东西不是文本- -,我下回来用Wireshark打开看了一下,发现PHP中的cURL根本就不去DNS查询域名,所以也不会返回IP,file get content之类的函数都会去查询DNS

而如果有/etc/hosts文件的话curl查询的域名会进去找IP,找不到也不查询,直接返回无法解析。

这样的话我就不知道加入一个二级域名怎么进入了————现在也不会编译安装那些库什么的,还得继续学啊

最后编辑:
作者:scplay
这个作者貌似有点懒,什么都没有留下。

留下一个回复

你的email不会被公开。