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

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

Barbara Streisand
Barbara Streisandoriginal
2024-12-24 20:07:12768parcourir

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

PHP file_get_contents ne parvient pas à récupérer le contenu d'une URL externe

Lorsque vous tentez d'utiliser la fonction PHP file_get_contents pour récupérer le contenu d'une URL distante (par ex. , file_get_contents('http://example.com')), vous rencontrez un problème où le résultat est systématiquement vide sur un serveur spécifique. Cependant, l'accès aux fichiers locaux à l'aide de la même fonction renvoie les résultats attendus.

Cause probable dans php.ini

Le résultat vide est probablement attribué à un paramètre de configuration dans PHP. php.ini.

Solution

Pour résoudre ce problème, vérifiez les éléments suivants configurations spécifiques dans le fichier php.ini :

  • allow_url_fopen : assurez-vous que ce paramètre est activé (défini sur 1 ou activé). Il contrôle si PHP peut accéder aux URL à l'aide des fonctions du système de fichiers.
  • allow_url_include : désactivez ce paramètre (défini sur 0 ou sur Désactivé) si vous souhaitez empêcher PHP d'inclure directement les URL distantes.
  • file_get_contents.allow_url_fopen : s'il est présent, ce paramètre remplace allow_url_fopen spécifiquement pour file_get_contents. Assurez-vous qu'il est activé (défini sur 1).

Si ces paramètres ne sont pas définis comme décrit, ajustez-les en conséquence et redémarrez le serveur PHP pour appliquer les modifications.

Approche alternative

Si vous ne pouvez pas modifier les paramètres php.ini ou préférez une approche différente, vous pouvez imiter le comportement de file_get_contents en utilisant cURL, comme le montre l'exemple suivant :

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;
}

echo get_content('http://example.com');

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