Maison  >  Article  >  développement back-end  >  Exemple de code de méthode PHP pour récupérer le contenu HTTPS et gérer les erreurs

Exemple de code de méthode PHP pour récupérer le contenu HTTPS et gérer les erreurs

怪我咯
怪我咯original
2017-07-07 09:41:08876parcourir

Cet article présente principalement la méthode d'implémentation du contenu HTTPS d'exploration PHP, et comment gérer un problème HTTPS rencontré lors de l'exploration. Les amis dans le besoin peuvent s'y référer.

Problème

J'ai rencontré un problème HTTPS lors de mes recherches sur l'API Hacker News. Étant donné que toutes les API Hacker News sont accessibles via le protocole HTTPS crypté, différent du protocole HTTP ordinaire, lors de l'utilisation de la fonction <a href="http://www.php.cn/wiki/1311.html" target="_blank">file_get_contents</a>() en PHP pour obtenir les données fournies dans l'API, une erreur

Le code utilisé est le suivant :

<?php
$data = file_get_contents("/http://blog.it985.com/");
?>
Lors de l'exécution du code ci-dessus, le message d'erreur suivant est rencontré :

PHP Warning: file_get_contents(): Unable to find the wrapper “https” – did you forget to enable it when you configured PHP?

Pourquoi cette erreur se produit-elle ?

Après quelques recherches sur Internet, j'ai constaté que de nombreuses personnes ont rencontré cette erreur. Le problème est très direct, car il n'est pas activé dans le

fichier de configuration de PHP. Un paramètre, sur ma machine locale, est l'élément dans /apache/bin/php.ini. Le point-virgule précédent doit être supprimé. ;extension=php_openssl.dll

Vous pouvez utiliser le script suivant pour vérifier la configuration de votre environnement PHP :

<?php
$w = stream_get_wrappers();
echo &#39;openssl: &#39;, extension_loaded (&#39;openssl&#39;) ? &#39;yes&#39;:&#39;no&#39;, "\n";
echo &#39;http wrapper: &#39;, in_array(&#39;http&#39;, $w) ? &#39;yes&#39;:&#39;no&#39;, "\n";
echo &#39;https wrapper: &#39;, in_array(&#39;https&#39;, $w) ? &#39;yes&#39;:&#39;no&#39;, "\n";
echo &#39;wrappers: &#39;, var_dump($w);
En exécutant l'extrait de script ci-dessus, le résultat sur ma machine est :

<?php
openssl: no
http wrapper: yes
https wrapper: no
wrappers: array(10) {
[0]=>
string(3) "php"
[1]=>
string(4) "file"
[2]=>
string(4) "glob"
[3]=>
string(4) "data"
[4]=>
string(4) "http"
[5]=>
string(3) "ftp"
[6]=>
string(3) "zip"
[7]=>
string(13) "compress.zlib"
[8]=>
string(14) "compress.bzip2"
[9]=>
string(4) "phar"
}

Alternatives

Trouvez l'erreur et corrigez-la C'est très simple. La chose difficile est que vous ne pouvez pas corriger l'erreur après l'avoir trouvée. Je voulais à l'origine mettre cette méthode de script sur l'hôte distant, mais je n'ai pas pu modifier la configuration PHP de l'hôte distant. Le résultat était que je ne pouvais pas utiliser cette solution, mais nous ne pouvons pas nous accrocher à un arbre. Cette route ne fonctionne pas. Jetons un coup d'oeil. Y a-t-il un

autre moyen ?

Une autre fonction que j'utilise souvent pour capturer du contenu en PHP est

, qui est plus puissante que curl et fournit de nombreux paramètres facultatifs. Pour le problème d'accès au contenu HTTPS, les file_get_contents() paramètres de configuration que nous devons utiliser sont : CURL

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
Vous pouvez voir d'après la sémantique qu'il ignore/ignore la vérification de sécurité SSL. Ce n’est peut-être pas une bonne idée, mais pour les scénarios ordinaires, cela suffit.

Ce qui suit est une fonction encapsulée par

qui peut accéder au contenu HTTPS : Curl

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