Maison > développement back-end > tutoriel php > Pourquoi `file_get_contents` ne parvient-il pas à récupérer les URL externes en PHP et comment puis-je y remédier ?

Pourquoi `file_get_contents` ne parvient-il pas à récupérer les URL externes en PHP et comment puis-je y remédier ?

Susan Sarandon
Libérer: 2024-12-09 00:52:10
original
193 Les gens l'ont consulté

Why Does `file_get_contents` Fail to Fetch External URLs in PHP, and How Can I Fix It?

Barrière d'URL externe dans file_get_contents de PHP : plongée dans php.ini

Dans le domaine de PHP, la fonction file_get_contents offre un moyen pratique de récupérer le contenu d'un fichier ou d'une ressource distante. Cependant, certaines configurations au sein du fichier php.ini peuvent entraver sa fonctionnalité lors de l'accès à des URL externes.

Comme en témoigne le dilemme de l'utilisateur, file_get_contents('http://example.com') peut donner des résultats contrastés selon l'environnement du serveur. Bien qu'il fonctionne comme prévu dans certains paramètres, il produit un résultat vide sur un serveur particulier, bien qu'il fonctionne localement lors de l'accès aux fichiers internes.

La clé réside dans l'identification de la configuration php.ini spécifique responsable de cet écart. Un coupable potentiel est la directive allow_url_fopen, qui régit la capacité du script PHP à ouvrir des URL externes. Si cette directive est définie sur 0, l'accès aux URL externes via des fonctions PHP comme file_get_contents sera interdit.

De plus, l'expérience de l'utilisateur met en évidence la distinction entre l'accès aux fichiers locaux et externes. La directive allow_url_fopen n'affecte pas l'interaction de PHP avec les fichiers locaux. Pourtant, lorsqu'il s'agit de ressources distantes, le comportement de la fonction dépend de la présence ou de l'absence de la valeur 1 de la directive.

Pour contourner les obstacles potentiels posés par php.ini, des approches alternatives peuvent être adoptées. Une option viable consiste à utiliser une fonction telle que celle fournie dans la réponse :

function get_content($URL) {
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_URL, $URL);
  $data = curl_exec($ch);
  curl_close($ch);
  return $data;
}
Copier après la connexion

Cette fonction émule le comportement de file_get_contents mais exploite les capacités de cURL pour interagir avec les URL externes. En utilisant cURL, vous bénéficiez de la flexibilité nécessaire pour accéder aux ressources distantes même lorsque les configurations php.ini restreignent l'utilisation de allow_url_fopen.

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.cn
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