2009-08-17 8 views
1

Je suis en train d'exécuter un appel PHP facile à charger le contenu d'une page Web: $result = file_get_contents("http://www.google.com");file_get_contents avec HTTP: Aucun fichier ou répertoire

Le résultat revenir est un fichier étrange introuvable erreur: Warning: file_get_contents(http://www.google.com): failed to open stream: No such file or directory in /var/www/html/test.php on line 5

J'ai "allow_url_fopen = On" sur mes fichiers php.ini et aucun fichier .htaccess qui pourrait modifier le réglage dans le répertoire. Des idées? Je n'ai jamais eu de problème avec cette fonction auparavant sur différents serveurs.

+0

avez-vous essayé de mettre 'autour de l'url? – Zed

+0

Il y a des guillemets doubles dans la ligne file_get_contents, l'erreur ne les affiche pas. Les guillemets simples ont le même effet. – timbonicus

Répondre

1

Apparemment, le gestionnaire de flux HTTP n'est pas présent, ce qui provoque cette erreur. Je ne suis pas sûr comment il a été enlevé ou comment le restaurer, mais cela l'expliquerait! J'ai essayé stream_wrapper_restore ('http') au cas où il ne serait pas enregistré, mais cela n'a aucun effet.

+0

Avait un problème similaire, mais avec https. J'ai trouvé la réponse que je cherchais ici http://stackoverflow.com/questions/1975461/file-get-contents-with-https –

0

Avez-vous réinitialisé votre serveur Web en changeant "allow_url_fopen"?

OU

peut être désavouée L'agent utilisateur « PHP » sur le serveur que vous interrogez.

OU

A partir de la page PHP Manual: Remarque: Si vous ouvrez une URI avec des caractères spéciaux, tels que les espaces, vous devez encoder l'URI avec urlencode().

Vous pouvez faire un test des paramètres de php.ini comme celui-ci ...

if (ini_get('allow_url_fopen') == '1') { 
    // use fopen() or file_get_contents() 
} else { 
    // use curl or your custom function 
} 
+1

De bonnes suggestions, j'ai redémarré le serveur Web et ajouté: 'ini_set ('user_agent', 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv: 1.9.1.2) Gecko/20090729 Firefox/3.5. 2 GTB5 '); ' Malheureusement, aucun changement. L'ajout d'urlencode n'a pas non plus d'effet. – timbonicus

0

Je pense qu'il est une sorte d'effet proxy.
Utilisez-vous un proxy? Si c'est le cas, vous devez créer un contexte de flux avec les détails du proxy.

+0

Rien de spécial, la boîte est derrière un NAT mais pas de proxy. Je peux utiliser wget depuis la ligne de commande et récupérer les mêmes pages web. – timbonicus

+0

Avez-vous essayé d'utiliser file_get_contents sur d'autres pages? Comme si vous utilisiez une adresse absolue dans un fichier local ou un autre site n'utilisant pas https. Vérifiez si l'extension php_openssl.dll a été décommentée dans votre fichier php.ini, enregistrez le fichier et redémarrez le serveur à nouveau. – w35l3y

0

Je ne sais pas, mais essayez:

if(($fp=fopen('http://www.google.com/', 'rb'))!=null) 
{ 
// for php5 and up or use fread for php4 
$contents = stream_get_contents($fp); 
fclose($fp); 
} 
Questions connexes