Heim >Backend-Entwicklung >PHP-Tutorial >Wie behebe ich den Fehler „Verschlüsselung konnte nicht aktiviert werden' für HTTPS-Anfragen in PHP?

Wie behebe ich den Fehler „Verschlüsselung konnte nicht aktiviert werden' für HTTPS-Anfragen in PHP?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-23 19:00:021058Durchsuche

How to Resolve

Fehler bei „file_get_contents()“: Auflösen von „Verschlüsselung konnte nicht aktiviert werden“ für HTTPS-Anfragen

Problem:

Beim Versuch, eine HTTPS-Webseite mit file_get_contents() abzurufen, stoßen einige Benutzer auf die Fehlermeldung „Verschlüsselung konnte nicht aktiviert werden.“ Dieses Problem betrifft insbesondere die URL „https://eresearch.fidelity.com/eresearch/evaluate/fundamentals/earnings.jhtml?stockspage=earnings&symbols=AAPL&showPriceLine=yes.“

Ursache:

Der Fehler ist auf die Verwendung von SSLv3 durch die betroffene Website zurückzuführen. Für das OpenSSL-Modul in PHP sind Kompatibilitätsprobleme mit älteren SSL-Versionen bekannt.

Lösung:

Um das Problem zu beheben, ändern Sie den file_get_contents()-Code, um die cURL-Erweiterung zu verwenden , was die Angabe der SSL-Version ermöglicht. Der folgende Codeausschnitt demonstriert diese Lösung:

<code class="php">function getSSLPage($url) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_SSLVERSION,3); 
    $result = curl_exec($ch);
    curl_close($ch);
    return $result;
}

var_dump(getSSLPage("https://eresearch.fidelity.com/eresearch/evaluate/analystsOpinionsReport.jhtml?symbols=api"));</code>

Alternative Lösung für Windows-Benutzer:

Auf Windows-Systemen kann es aufgrund fehlenden Zugriffs zu einer zusätzlichen Herausforderung kommen zu Root-Zertifikaten. Um dieses Problem zu beheben:

  1. Laden Sie die Stammzertifikate von http://curl.haxx.se/docs/caextract.html herunter.
  2. Geben Sie den Pfad zur heruntergeladenen Datei „cacert.pem“ an "-Datei mit den folgenden cURL-Optionen:
<code class="php">curl_setopt($ch, CURLOPT_CAINFO, __DIR__ . "/certs/cacert.pem");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);</code>

Hinweis: Stellen Sie sicher, dass die SSL-Überprüfung (CURLOPT_SSL_VERIFYPEER) aktiviert ist, sonst treten Fehler auf.

Das obige ist der detaillierte Inhalt vonWie behebe ich den Fehler „Verschlüsselung konnte nicht aktiviert werden' für HTTPS-Anfragen in PHP?. 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