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.
Identifizieren 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 die SSLv3-Unterstützung zu aktivieren , es wird empfohlen, stattdessen cURL zu verwenden:
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"));
Diese Lösung setzt die SSL-Version explizit auf v3, sodass Curl damit umgehen kann Der SSL-Handshake wurde erfolgreich ausgeführt.
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 erreicht werden durch:
curl_setopt($ch, CURLOPT_CAINFO, __DIR__ . "/certs/cacert.pem");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
Indem Sie die Option CURLOPT_SSL_VERIFYPEER auf true setzen, überprüft Curl das Peer-Zertifikat anhand der angegebenen Stammzertifikate.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3