Maison >développement back-end >tutoriel php >Pourquoi `file_get_contents()` ne parvient-il pas à récupérer les URL externes sur ce serveur ?

Pourquoi `file_get_contents()` ne parvient-il pas à récupérer les URL externes sur ce serveur ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-13 14:57:11830parcourir

Why is `file_get_contents()` Failing to Retrieve External URLs on This Server?

Problème File_get_contents avec les URL externes sur un serveur spécifique

Problème :

Lors de l'utilisation de la fonction PHP file_get_contents() pour récupérer le contenu d'une URL externe sur un serveur spécifique, un résultat vide est renvoyé. Cependant, la fonction fonctionne correctement lorsqu'elle est utilisée localement ou lors de l'accès à des URL internes sur le même serveur.

Cause possible :

Le problème est probablement lié à un PHP.ini paramètre de configuration.

Solution :

Pour déterminer quelle configuration PHP.ini est à l'origine du problème, suivez ces étapes :

  1. Vérifiez le paramètre allow_url_fopen : Ce paramètre contrôle si PHP peut accéder aux URL externes via la famille de fonctions fopen. S'il est défini sur Off, file_get_contents() ne pourra pas récupérer le contenu des URL externes.

    Vérifiez la ligne suivante dans le fichier PHP.ini :

    allow_url_fopen = Off

    Si c'est le cas réglé sur Off, changez-le en On.

  2. Vérifiez le allow_url_include paramètre : Ce paramètre contrôle si PHP peut inclure des URL externes dans les scripts. S'il est défini sur Off, file_get_contents() ne pourra peut-être pas récupérer le contenu des URL externes.

    Vérifiez la ligne suivante dans le fichier PHP.ini :

    allow_url_include = Off

    Si c'est le cas réglé sur Off, changez-le en On.

  3. Utilisez une fonction alternative : Si les paramètres ci-dessus ne résout pas le problème, vous pouvez utiliser des fonctions alternatives pour imiter le comportement de file_get_contents(). Une de ces fonctions est curl_init() :

    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