Maison  >  Article  >  développement back-end  >  Comment résoudre l'erreur « Échec de l'activation du crypto » pour les requêtes HTTPS en PHP ?

Comment résoudre l'erreur « Échec de l'activation du crypto » pour les requêtes HTTPS en PHP ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-23 19:00:02979parcourir

How to Resolve

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

  1. Téléchargez les certificats racine depuis http://curl.haxx.se/docs/caextract.html.
  2. Spécifiez le chemin d'accès au fichier "cacert.pem" téléchargé " en utilisant les options cURL suivantes :
<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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn