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
Libérer: 2024-12-13 14:57:11
original
911 Les gens l'ont consulté

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
    Copier après la connexion

    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
    Copier après la connexion

    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');
    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