Maison > Article > développement back-end > Comment résoudre l'erreur « Échec de l'activation du crypto » pour les requêtes HTTPS en PHP ?
Échec de "file_get_contents()" : résolution de "Échec de l'activation du chiffrement" pour les requêtes HTTPS
Problème :
Lorsqu'ils tentent de récupérer une page Web HTTPS à l'aide de file_get_contents(), certains utilisateurs rencontrent l'erreur « Échec de l'activation du crypto ». Ce problème affecte particulièrement l'URL "https://eresearch.fidelity.com/eresearch/evaluate/fundamentals/earnings.jhtml?stockspage=earnings&symbols=AAPL&showPriceLine=yes."
Cause :
L'erreur provient de l'utilisation de SSLv3 par le site Web concerné. Le module openssl en PHP présente des problèmes de compatibilité connus avec les anciennes versions de SSL.
Résolution :
Pour résoudre le problème, modifiez le code file_get_contents() pour utiliser l'extension cURL. , qui permet de spécifier la version SSL. L'extrait de code suivant illustre cette solution :
<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>
Résolution alternative pour les utilisateurs Windows :
Sur les systèmes Windows, il peut y avoir un défi supplémentaire en raison du manque d'accès. aux certificats racine. Pour résoudre ce problème :
<code class="php">curl_setopt($ch, CURLOPT_CAINFO, __DIR__ . "/certs/cacert.pem"); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);</code>
Remarque : Assurez-vous d'activer la vérification SSL (CURLOPT_SSL_VERIFYPEER) sinon vous rencontrerez des erreurs.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!