这篇文章主要介绍“php curl出现错误码7的问题怎么解决”,在日常操作中,相信很多人在php curl出现错误码7的问题怎么解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”php curl出现错误码7的问题怎么解决”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
成都创新互联-专业网站定制、快速模板网站建设、高性价比君山网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式君山网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖君山地区。费用合理售后完善,十载实体公司更值得信赖。
本文操作环境:Windows7系统、PHP7.1版,DELL G3电脑
如何解决php curl 错误码7的问题?php - 如何解决CURL错误( 7 ): 无法连接到主机?
调用第三方接口,本地调用一切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); }
经过各种排查,代码无误,我的问题为线上环境的相关配置问题。
①打开selinux目录下的config文件
nano /etc/selinux/config
②找到config文件中的SELINUX=enforcing这行
③更改SELINUX=disabled
④保存,退出,重启服务器
CURL错误 7未能连接到权限被拒绝"错误是由于CURL请求被某些防火墙或者类似的东西阻塞时造成的。
当curl请求与标准端口不匹配时,你将面临这个问题。
例如如果你在端口 1234上做了 curl,那么你将面临这个问题,因为端口 80的URL会给你带来很容易的结果。
最常见的这个错误已经在CentOS和其他带有'selinux'的操作系统上看到了。
你需要禁用或者将'selinux'改为允许
到此,关于“php curl出现错误码7的问题怎么解决”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注创新互联网站,小编会继续努力为大家带来更多实用的文章!