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:
<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!