Comment résoudre l'échec de l'initialisation cryptographique pour file_get_contents() à l'aide d'OpenSSL ?

DDD
Libérer: 2024-10-23 12:22:36
original
804 Les gens l'ont consulté

How to Resolve Failed Crypto Initialization for file_get_contents() Using OpenSSL?

Dépannage de l'échec de l'initialisation du chiffrement pour file_get_contents() avec OPENSSL

Lorsque vous rencontrez l'erreur « Échec de l'activation du chiffrement » lors de l'utilisation de file_get_contents() avec OPENSSL, il est crucial d'enquêter le problème sous-jacent.

Identification de la cause première

Le journal des erreurs fourni suggère un délai d'attente lors de l'initialisation du chiffrement. Mais le problème réside peut-être ailleurs. Une cause possible est que le site Web utilise une version SSL non prise en charge, telle que SSLv3.

Solution utilisant cURL

Pour contourner les limitations de file_get_contents() et activer la prise en charge SSLv3 , il est recommandé d'utiliser cURL à la place :

<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>
Copier après la connexion

Cette solution définit explicitement la version SSL sur v3, permettant à curl de gérer avec succès la négociation SSL.

Considérations supplémentaires pour les utilisateurs Windows

Pour les utilisateurs Windows, il peut également être nécessaire de spécifier l'emplacement des certificats racine pour curl. Ceci peut être réalisé par :

<code class="php">curl_setopt($ch, CURLOPT_CAINFO, __DIR__ . "/certs/cacert.pem");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);</code>
Copier après la connexion

En définissant l'option CURLOPT_SSL_VERIFYPEER sur true, curl vérifiera le certificat du homologue par rapport aux certificats racine spécifiés.

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!

source:php
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!