一个关于服务器curl的问题,请高手来看一看


是这样的,最近写了一段curl的抓取程序,在本地测试毫无问题,目标网站的信息能够获取,但上传到服务器(linux)上就出问题了,内容获取不到,curl error的报错是couldn't connect to host

然后我在服务器命令端curl别的网站,也不行,接着curl 自己网站的域名以及ip,都显示couldn't connect,获取自己网站目录下的txt文件,也只有curl localhost这样的路径才行,换成IP或者域名都不行

这种问题是什么原因,个人初步判断是不是服务器的出口被限制,因为在服务器上ping外站不能ping成功,ping自己的域名和ip也不行,这个问题的话具体需要主机方那边做哪些操作,开启哪些端口呢(之前貌似是好的,然后网站被搬迁到联通云机房后出了这样的问题)

(php apache配置方面应该没问题,curl模块已经开启,代码方面本地测试ok

   
  date_default_timezone_set('Asia/Shanghai');
  
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL,$url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);

if(defined('CURLOPT_IPRESOLVE') && defined('CURL_IPRESOLVE_V4')){
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
}
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION ,1);
curl_setopt ($ch, CURLOPT_ENCODING ,'utf8');
if(curl_exec($ch) === false){
echo 'Curl error: ' . curl_error($ch);
} else {
echo 'Operation completed without any errors';
}
//本地可以获取,服务器无法获取
echo $content = curl_exec($ch);



相关链接

php curl

Komm黑 10 years ago

会不会是服务器dns配置问题,最近dns好蛋疼

exsit answered 10 years ago

Your Answer