PHP: file_get_contents ($ loc) échoue
Je viens d'aménager un projet à partir de localhost sur mon serveur distant, et a remarqué que certains de mes scripts cessé de travailler. Le plus important était celui qui invoque file_get_contents()
chercher JSON valeurs à partir d'un autre script.
La Version de PHP est 5.2.4
allow_url_fopen
est SUR
Avertissement:
file_get_contents()
[function.file-get-contents]
:php_network_getaddresses
:getaddrinfo
a échoué: le Nom ou le service ne sait pas dans/var/www/html/2009/functions/functions.products.php
surline 5
Avertissement:
file_get_contents(http://data.example.com/new-data.php) [function.file-get-contents]
: failed to open stream:Success in /var/www/html/2009/functions/functions.products.php
surline 5
Le script a fonctionné à partir de: http://www.example.com
L'emplacement est passé dans la fonction est http://data.example.com/new-data.php
Note: Même nom de domaine, mais deux serveurs différents.
function getData() {
$location = "http://data.mysite.com/new-data.php";
$contents = file_get_contents($location);
$jsonVars = json_decode($contents);
return $jsonVars
}
source d'informationauteur Sampson
Vous devez vous connecter pour publier un commentaire.
DNS est cassé. Pouvez-vous
ping data.mysite.com
à partir d'un shell sur la machine (en supposant que vous en avez un)?Essayez de remplacer
data.mysite.com
avec une adresse IP fixe pour l'instant.Vous pouvez également essayer curl:
Et vous obtenez ce que vous voulez dans
$result
.De regarder votre /etc/hosts sur le serveur distant. Si elle est vide, vous devez ajouter "127.0.0.1 localhost".
À moins que c'est l'une des variétés de VPS où l'interface de bouclage frappe de l'extérieur de la machine; sur ceux-ci, vous devez utiliser votre VPS est le numéro IP à la place de 127.0.0.1.
Si vous êtes sûr qu'il n'est pas un problème de DNS, essayez de redémarrer Apache. Cette résolu pour moi, après 20 minutes de casse-tête.
Veuillez inclure plus d'informations, n' $contenu contenir quoi que ce soit? N'oubliez pas de faire la fonction json_decode($contenu, true) si vous voulez comme un tableau php sinon ses un stdClass qui revient.
Pourrait-il avoir un problème de résolution du nom d'hôte? est data.mysite.com la même machine que mysite.com?