Maison  >  Article  >  développement back-end  >  Pourquoi ma fonction PHP `file_get_contents()` génère-t-elle une erreur HTTP 403 interdite sur les serveurs distants ?

Pourquoi ma fonction PHP `file_get_contents()` génère-t-elle une erreur HTTP 403 interdite sur les serveurs distants ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-30 05:58:27522parcourir

Why Is My PHP `file_get_contents()` Function Throwing an HTTP 403 Forbidden Error on Remote Servers?

Échec de file_get_contents() de PHP avec une erreur HTTP 403 interdite sur le serveur distant

Lors de l'utilisation de la fonction file_get_contents() de PHP pour récupérer du contenu à partir d'un site Web distant pages, vous pouvez rencontrer une erreur HTTP 403 Forbidden sur votre serveur même s'il fonctionne localement. Pour résoudre ce problème, considérez les éléments suivants :

1. Débogage avec les utilitaires PHP

PHP fournit des options de débogage, telles que :

  • Variable $http_response_header : stocke les en-têtes HTTP de réponse après chaque appel file_get_contents().
  • Option contextuelle ignore_errors : Permet d'obtenir la réponse réelle, révélant la raison de l'erreur 403.

2. Adresse manquant d'en-tête HTTP

Votre demande peut manquer d'un en-tête HTTP requis, tel que Referer ou User-Agent. La plupart des navigateurs utilisent les agents utilisateurs suivants :

  • Chrome : Mozilla/5.0 (Windows NT 10.0 ; WOW64) AppleWebKit/537.36 (KHTML, comme Gecko) Chrome/50.0.2661.102 Safari/537.36
  • Firefox : Mozilla/5.0 (Windows NT 10.0 ; Win64 ; x64 ; rv:75.0) Gecko/20100101 Firefox/75.0

3. Faux agent utilisateur

Vous pouvez utiliser stream_context_create() pour créer un contexte avec un faux agent utilisateur :

<code class="php">$context = stream_context_create(
    array(
        "http" => array(
            "header" => "User-Agent: <Your User Agent>"
        )
    )
);

echo file_get_contents("www.google.com", false, $context);</code>

Cette requête simulera l'agent utilisateur et l'enverra au spécifié URL.

Références :

  • [stream_context_create()](https://www.php.net/manual/en/function.stream-context -create.php)

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