您好,欢迎访问一九零五行业门户网

如何解决php curl 错误码7的问题

php curl错误码7的解决办法:1、打开selinux目录下的config文件;2、找到config文件中的“selinux=enforcing”这行;3、更改“selinux=disabled”;4、重启服务器。
本文操作环境:windows7系统、php7.1版,dell g3电脑
如何解决php curl 错误码7的问题?php - 如何解决curl错误( 7 ): 无法连接到主机?
1. 问题描述调用第三方接口,本地调用一切ok,线上调用失败!
 本地通过curlrequest()方法调用第三方接口时,curl_errno()方法返回结果为0,显示调用成功,线上curl_errno()方法返回结果为7,调用失败。
环境:
本地wamp,线上lnmp
  为了排除环境问题,在服务器上cmd执行curl函数对第三方接口进行了post请求,发现调用成功!调用脚本入下:
curl -i -x post -h 'accept:application/json' -h 'content-type:application/json;charset=utf-8' -h 'authorization:**********************=' -d '{"voipaccount":"*********"}' 第三方接口的url
调用第三方接口关键代码:
/** * @param $requesturl | string 请求的地址 * @param bool $https * @param $headerinfo | array 头文件信息 * @param string $rquestmethod | string 请求类型 * @param $requestdata | json 发送请求的数据 * @return mixed */ public function curlrequest($requesturl,$requestdata,$https=true,$rquestmethod='post') { $headerinfo=[ 'accept:application/json', 'content-type:application/json;charset=utf-8', 'authorization:'.self::$auth ]; $ch = curl_init();//初始化 curl_setopt($ch, curlopt_url, $requesturl);//设置访问的url curl_setopt($ch, curlopt_useragent, $_server['http_user_agent']); // 模拟用户使用的浏览器 curl_setopt($ch, curlopt_httpheader, $headerinfo); // 设置头信息 curl_setopt($ch, curlopt_returntransfer, true);//只获取页面内容,但不输出 if($https){ curl_setopt($ch, curlopt_ssl_verifypeer, false);//不做服务器认证 curl_setopt($ch, curlopt_ssl_verifyhost, false);//不做客户端认证 } if($rquestmethod == 'post'){ curl_setopt($ch, curlopt_post, true);//设置请求是post方式 curl_setopt($ch, curlopt_postfields, $requestdata);//设置post请求的数据 } $str = curl_exec($ch);//执行访问,返回结果 if(curl_errno($ch)){ log::write('结果=========================================================:'.curl_errno($ch)); return ['statuscode' => -1, 'data' => 'curl请求错误,错误码为'.curl_errno($ch)]; } log::write('结果=========================================================:'.curl_errno($ch)); log::write('返回结果:'.$str); curl_close($ch);//关闭curl,释放资源 return json_decode($str,true); }
经过各种排查,代码无误,我的问题为线上环境的相关配置问题。
2. 解决办法①打开selinux目录下的config文件 
nano /etc/selinux/config
②找到config文件中的selinux=enforcing这行
③更改selinux=disabled
④保存,退出,重启服务器
3.小结curl错误 7未能连接到权限被拒绝错误是由于curl请求被某些防火墙或者类似的东西阻塞时造成的。
当curl请求与标准端口不匹配时,你将面临这个问题。
例如如果你在端口 1234上做了 curl,那么你将面临这个问题,因为端口 80的url会给你带来很容易的结果。
最常见的这个错误已经在centos和其他带有'selinux'的操作系统上看到了。
你需要禁用或者将'selinux'改为允许
推荐学习:《php视频教程》
以上就是如何解决php curl 错误码7的问题的详细内容。
其它类似信息

推荐信息