首頁  >  文章  >  後端開發  >  如何解決php curl 錯誤碼7的問題

如何解決php curl 錯誤碼7的問題

藏色散人
藏色散人原創
2021-09-12 10:18:066763瀏覽

php curl錯誤碼7的解決方法:1、開啟selinux目錄下的config檔;2、找到config檔中的「SELINUX=enforcing」這行;3、更改「SELINUX=disabled」;4 、重啟伺服器。

如何解決php curl 錯誤碼7的問題

本文操作環境: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的問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn