Wenn bei der Verwendung von file_get_contents() mit OPENSSL der Fehler „Krypto konnte nicht aktiviert werden“ auftritt, ist es wichtig, dies zu untersuchen das zugrunde liegende Problem.
Identifizierung der Grundursache
Das bereitgestellte Fehlerprotokoll deutet auf eine Zeitüberschreitung während der Krypto-Initialisierung hin. Das Problem könnte jedoch woanders liegen. Eine mögliche Ursache ist, dass die Website eine nicht unterstützte SSL-Version wie SSLv3 verwendet.
Lösung mit cURL
Um die Einschränkungen von file_get_contents() zu umgehen und SSLv3-Unterstützung zu aktivieren , wird empfohlen, stattdessen cURL zu verwenden:
<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>
Diese Lösung setzt die SSL-Version explizit auf v3, sodass Curl den SSL-Handshake erfolgreich verarbeiten kann.
Zusätzliche Überlegungen für Windows-Benutzer
Für Windows-Benutzer kann es auch erforderlich sein, den Speicherort von Stammzertifikaten für Curl anzugeben. Dies kann wie folgt erreicht werden:
<code class="php">curl_setopt($ch, CURLOPT_CAINFO, __DIR__ . "/certs/cacert.pem"); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);</code>
Indem Sie die Option CURLOPT_SSL_VERIFYPEER auf „true“ setzen, überprüft Curl das Peer-Zertifikat anhand der angegebenen Stammzertifikate.
Das obige ist der detaillierte Inhalt vonWie kann eine fehlgeschlagene Krypto-Initialisierung für file_get_contents() mithilfe von OpenSSL behoben werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!