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中文網其他相關文章!