2008-10-30 7 views
1

Lorsque je tente d'utiliser curl ou file_get_contents lire quelque chose comme http://example.com/python/json/ de http://example.com/ je devrais obtenir une réponse JSON, mais je reçois une erreur 404. Utiliser curl ou toute autre méthode en dehors de mon propre domaine fonctionne parfaitement bien.Lecture des fichiers à partir des résultats propres de domaine dans 404

echo file_get_contents('http://example.com/python/json/'); => 404 
echo file_get_contents('http://google.com'); => OK 

Le même script fonctionne sur mon ordinateur portable, mais je ne peux pas comprendre ce que la différence est.

Répondre

2

Il semble que example.com ne soit pas le domaine par défaut pour l'adresse IP et que file_get_contents utilise HTTP/1.0 au lieu de HTTP/1.1 et/ou n'envoie pas d'en-tête Host:. Essayez le support curl en PHP à la place:

$curl = curl_init(); 
curl_setopt($curl, CURLOPT_URL, 'http://example.com/'); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
$result = curl_exec($curl); 
curl_close($curl); 

Sinon, le fichier/etc/hosts définit une adresse IP incorrecte pour example.com.

+0

Merci. J'ai changé le nom de domaine en adresse IP et nous sommes tous ensemble. –

+0

J'ai eu un problème similaire et il s'est avéré que quelqu'un avait fixé l'adresse IP dans/etc/hosts à une ancienne adresse IP dynamique avant de passer à l'état statique. Merci de m'avoir aidé par inadvertance aussi! – NateDSaint

0

Quelque chose à faire avec le domaine, peut-être? Bien sûr, vous ne voulez pas le révéler ici, donc vous pourriez avoir un peu à faire, mais je suppose que le contrôle de santé mentale serait que vous pouvez accéder à cette URL via un navigateur Web (ou un outil de ligne de commande comme GET si vous 're ligne de commande seulement).

Vous pouvez également effectuer un ping et/ou traceroute vers le domaine - les résultats peuvent être très intéressants.

Questions connexes