Maison > développement back-end > tutoriel php > Comment activer la cryptographie lors de l'utilisation de file_get_contents() avec des URL HTTPS spécifiques ?

Comment activer la cryptographie lors de l'utilisation de file_get_contents() avec des URL HTTPS spécifiques ?

Mary-Kate Olsen
Libérer: 2024-10-23 12:17:30
original
513 Les gens l'ont consulté

How to Enable Crypto When Using file_get_contents() with Specific HTTPS URLs?

Échec de l'activation du chiffrement lors de l'utilisation de file_get_contents() avec des URL HTTPS spécifiques

Lors de la tentative de récupération de contenu à partir de certaines URL HTTPS, telles que https ://eresearch.fidelity.com/, en utilisant file_get_contents(), vous pouvez rencontrer les erreurs suivantes :

Warning: file_get_contents(): SSL: crypto enabling timeout
Warning: file_get_contents(): Failed to enable crypto
Warning: file_get_contents(): failed to open stream: operation failed
Fatal error: Maximum execution time of 30 seconds exceeded
Copier après la connexion

Solution :

Le problème vient du site Web cible utilisant le protocole SSLv3, qui n'est potentiellement pas pris en charge par votre configuration PHP.

Option 1 : Spécifiez la version SSL à l'aide de cURL

Créez une fonction à l'aide de cURL :

<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); // Specify SSL version 3
    $result = curl_exec($ch);
    curl_close($ch);
    return $result;
}</code>
Copier après la connexion

Exemple d'utilisation :

<code class="php">var_dump(getSSLPage("https://eresearch.fidelity.com/eresearch/evaluate/analystsOpinionsReport.jhtml?symbols=api"));</code>
Copier après la connexion

Option 2 : Inclure les certificats racine dans Windows (facultatif)

Sous Windows, vous pouvez rencontrer un manque d'accès aux certificats racines. Pour résoudre ce problème, suivez ces étapes :

  • Téléchargez les certificats racine depuis http://curl.haxx.se/docs/caextract.html
  • Modifiez votre code cURL :
<code class="php">curl_setopt($ch, CURLOPT_CAINFO, __DIR__ . "/certs/cacert.pem");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); // True: verify certificates</code>
Copier après la connexion

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 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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal