ホームページ  >  記事  >  バックエンド開発  >  PHP CURLエラーコード7の問題を解決する方法

PHP CURLエラーコード7の問題を解決する方法

藏色散人
藏色散人オリジナル
2021-09-12 10:18:066816ブラウズ

PHP CURL エラー コード 7 の解決策: 1. selinux ディレクトリの設定ファイルを開きます; 2. 設定ファイル内の「SELINUX=enforcing」行を見つけます; 3. 「SELINUX=disabled」を変更します; 4 . 、サーバーを再起動します。

PHP CURLエラーコード7の問題を解決する方法

この記事の動作環境:Windows7システム、PHP7.1バージョン、DELL G3コンピュータ

phpカールの解決方法エラーコード7の質問? CURL エラー (7) を解決する方法: ホストに接続できませんか?

1. 問題の説明

サードパーティ インターフェイスを呼び出すとき、ローカルで呼び出すときはすべて問題ありませんが、オンライン呼び出しは失敗します。

サードパーティ インターフェイスが curLRequest() メソッドを通じてローカルで呼び出される場合、curl_errno() メソッドは呼び出しが成功したことを示す結果 0 を返します。オンラインのcurl_errno()メソッドは結果7を返し、呼び出しは失敗しました。

環境:

ローカル wamp、オンライン lnmp

環境の問題を解決するために、サーバー cmd 上でcurl関数を実行して、3番目のサーバーにポストリクエストを作成しました。通話が成功したことがわかりました。次のようにスクリプトを呼び出します:

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ディレクトリにある設定ファイルを開きます

nano /etc/selinux/config

設定ファイルで SELINUX=enforcing 行を見つけます

#③SELINUX=disabled を変更します

#④

保存して終了し、サーバーを再起動します

3. 概要

CURL エラー7 「許可が拒否されました」エラーは、CURL リクエストがファイアウォールなどによってブロックされている場合に発生します。

curl リクエストが標準ポートと一致しない場合、この問題に直面しています。

たとえば、ポート 1234 でcurl を実行すると、ポート 80 の URL では非常に簡単な結果が得られるため、この問題に直面します。

最も一般的に、このエラーは、「selinux」を使用する CentOS およびその他のオペレーティング システムで発生します。

無効にするか、「selinux」を許可するように変更する必要があります

推奨学習: 「

PHP ビデオ チュートリアル

以上がPHP CURLエラーコード7の問題を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。