Heim  >  Artikel  >  Backend-Entwicklung  >  Wie behebe ich SSL-Timeout- und Krypto-Aktivierungsfehler in PHP für file_get_contents()?

Wie behebe ich SSL-Timeout- und Krypto-Aktivierungsfehler in PHP für file_get_contents()?

Linda Hamilton
Linda HamiltonOriginal
2024-10-23 11:52:30959Durchsuche

How to Resolve SSL Timeout and Crypto Enabling Errors in PHP for file_get_contents()?

SSL-Timeout und Krypto-Aktivierungsfehler für file_get_contents() behoben

Wenn Sie in PHP file_get_contents() zum Abrufen von Inhalten von HTTPS-Seiten verwenden, Es ist möglich, dass Fehler im Zusammenhang mit der SSL-Verschlüsselungsaktivierung auftreten. Ein solcher Fehler ist:

Warning: file_get_contents(): SSL: crypto enabling timeout...
Warning: file_get_contents(): Failed to enable crypto...

Dieses Problem tritt auf, wenn in der PHP-Konfiguration die notwendigen Einstellungen fehlen, um Krypto für SSL-Verbindungen zu aktivieren. Um dies zu beheben, wird die folgende Lösung vorgeschlagen:

Verwendung von cURL mit SSLv3

Anstelle von file_get_contents() kann die cURL-Bibliothek verwendet werden, die eine bessere Kontrolle darüber bietet SSL-Einstellungen. Durch Festlegen der Option CURLOPT_SSLVERSION auf 3 wird SSLv3 aktiviert, wodurch möglicherweise das Problem behoben wird:

<code class="php"><?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>

cURL für die SSL-Verifizierung konfigurieren

In bestimmten Fällen tritt das Problem auf kann auch auf fehlende oder unvollständige Root-Zertifikate zurückzuführen sein. Um eine ordnungsgemäße SSL-Überprüfung sicherzustellen, werden die folgenden Schritte empfohlen:

  1. Laden Sie die Stammzertifikate herunter.
  2. Geben Sie den Pfad zur Zertifikatsdatei mit CURLOPT_CAINFO an:
<code class="php">curl_setopt($ch, CURLOPT_CAINFO, __DIR__ . "/certs/cacert.pem");</code>
  1. SSL-Verifizierung mit CURLOPT_SSL_VERIFYPEER aktivieren:
<code class="php">curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);</code>

Durch die Implementierung dieser Lösungen können Sie die mit file_get_contents() in PHP verbundenen SSL-Timeout- und Krypto-Aktivierungsfehler beheben und Ihnen so die Aktivierung ermöglichen um Inhalte von HTTPS-Seiten ohne weitere Komplikationen abzurufen.

Das obige ist der detaillierte Inhalt vonWie behebe ich SSL-Timeout- und Krypto-Aktivierungsfehler in PHP für file_get_contents()?. 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