Heim  >  Artikel  >  Backend-Entwicklung  >  So lösen Sie das Problem des PHP-Curl-Fehlercodes 7

So lösen Sie das Problem des PHP-Curl-Fehlercodes 7

藏色散人
藏色散人Original
2021-09-12 10:18:066778Durchsuche

Lösung für PHP-Curl-Fehlercode 7: 1. Öffnen Sie die Konfigurationsdatei im Selinux-Verzeichnis. 2. Suchen Sie die Zeile „SELINUX=enforcing“ in der Konfigurationsdatei. 4. Starten Sie den Server neu .

So lösen Sie das Problem des PHP-Curl-Fehlercodes 7

Die Betriebsumgebung dieses Artikels: Windows 7-System, PHP-Version 7.1, DELL G3-Computer

Wie löse ich das Problem des PHP-Curl-Fehlercodes 7? So beheben Sie den CURL-Fehler (7): Verbindung zum Host kann nicht hergestellt werden?

1. Problembeschreibung

Beim Aufruf einer Drittanbieter-Schnittstelle ist beim lokalen Anruf alles in Ordnung, schlägt jedoch beim Online-Anruf fehl!

Wenn die Drittanbieterschnittstelle lokal über die Methode curLRequest() aufgerufen wird, gibt die Methode curl_errno() ein Ergebnis von 0 zurück, was anzeigt, dass der Aufruf erfolgreich war. Die Online-Methode curl_errno() gibt ein Ergebnis von 7 zurück , was darauf hinweist, dass der Anruf fehlschlägt.

Umgebung:

Lokaler Wamp, Online-LNMP

Um Umgebungsprobleme zu beseitigen, habe ich die Curl-Funktion auf dem Server-CMD ausgeführt, um eine Post-Anfrage an die Drittanbieterschnittstelle zu stellen, und festgestellt, dass der Aufruf erfolgreich war! Das aufrufende Skript lautet wie folgt:

curl -i -X POST -H 'Accept:application/json' -H 'Content-Type:application/json;charset=utf-8' -H 'Authorization:**********************=' -d '{"voipAccount":"*********"}' 第三方接口的URL

Der Schlüsselcode zum Aufrufen der Drittanbieter-Schnittstelle:

  /**
     * @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);
    }

Nach verschiedenen Untersuchungen ist der Code korrekt. Mein Problem hängt mit der Konfiguration der Online-Umgebung zusammen.

2. Lösung

Öffnen Sie die Konfigurationsdatei im Selinux-Verzeichnis Ändern Sie SELINUX=deaktiviert „Speichern, beenden, Server neu starten“

Dieses Problem tritt auf, wenn die Curl-Anfrage nicht mit dem Standardport übereinstimmt.

Wenn Sie beispielsweise Curl auf Port 1234 ausführen, tritt dieses Problem aufgrund von Port 80 auf. Die URL wird Ihnen angezeigt Sehr einfache Ergebnisse. Am häufigsten wurde dieser Fehler bei CentOS und anderen Betriebssystemen mit „Selinux“ beobachtet.

Sie müssen „Selinux“ deaktivieren oder ändern.

Empfohlenes Lernen: „ PHP-Video-Tutorial"

Das obige ist der detaillierte Inhalt vonSo lösen Sie das Problem des PHP-Curl-Fehlercodes 7. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn