Maison  >  Article  >  développement back-end  >  Comment résoudre les erreurs de délai d'attente SSL et d'activation de chiffrement en PHP pour file_get_contents() ?

Comment résoudre les erreurs de délai d'attente SSL et d'activation de chiffrement en PHP pour file_get_contents() ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-23 11:52:30959parcourir

How to Resolve SSL Timeout and Crypto Enabling Errors in PHP for file_get_contents()?

Erreurs d'expiration du délai SSL et d'activation du chiffrement résolues pour file_get_contents()

En PHP, lors de l'utilisation de file_get_contents() pour récupérer le contenu des pages HTTPS, il est possible de rencontrer des erreurs liées à l'activation du chiffrement SSL. L'une de ces erreurs est :

Warning: file_get_contents(): SSL: crypto enabling timeout...
Warning: file_get_contents(): Failed to enable crypto...

Ce problème survient lorsque la configuration PHP ne dispose pas des paramètres nécessaires pour activer le chiffrement pour les connexions SSL. Pour remédier à cela, la solution suivante est proposée :

Utiliser cURL avec SSLv3

Au lieu de file_get_contents(), la bibliothèque cURL peut être utilisée, ce qui permet un meilleur contrôle sur Paramètres SSL. En définissant l'option CURLOPT_SSLVERSION sur 3, SSLv3 sera activé, résolvant potentiellement le problème :

<code class="php"><?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>

Configuration de cURL pour la vérification SSL

Dans certains cas, le problème peut également provenir de certificats racine manquants ou incomplets. Pour garantir une vérification SSL appropriée, les étapes suivantes sont recommandées :

  1. Téléchargez les certificats racine.
  2. Spécifiez le chemin d'accès au fichier de certificat à l'aide de CURLOPT_CAINFO :
<code class="php">curl_setopt($ch, CURLOPT_CAINFO, __DIR__ . "/certs/cacert.pem");</code>
  1. Activez la vérification SSL à l'aide de CURLOPT_SSL_VERIFYPEER :
<code class="php">curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);</code>

En implémentant ces solutions, vous pouvez résoudre le délai d'expiration SSL et les erreurs d'activation de chiffrement associées à file_get_contents() en PHP, vous permettant pour récupérer le contenu des pages HTTPS sans autres complications.

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