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 ): 無法連線到主機?
呼叫第三方接口,本地呼叫一切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影片教學》#
以上是如何解決php curl 錯誤碼7的問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!