PHP file_get_contents funktioniert nicht auf localhost
Arbeite ich an meiner website vom localhost (http://172.16.65.1/) einen MAMP server auf OSX.
Ich möchte, laden einige JSON von Google und einige einfache tests, die mir zeigen, ich habe hier ein problem..
echo file_get_contents("http://www.google.com"); //FAILS
//PHP log: [07-Dec-2011 23:09:21] PHP Warning: file_get_contents(http://www.google.com) [<a href='function.file-get-contents'>function.file-get-contents</a>]: failed to open stream: Host is down in /Applications/MAMP/htdocs/-tests/get-json.php on line 3
echo file_get_contents("http://www.yahoo.com"); //FAILS
//echo file_get_contents("http://localhost"); //WORKS
//echo file_get_contents("http://172.16.65.1/"); //WORKS - My MAMP server
Was kann ich dagegen tun?
Es funktioniert gut auf meinem host-Provider-server.
- Welche version von MAMP verwenden Sie?
- Die Chancen sind google lehnen gegebenenfalls Anfragen ab, die über file_get_contents b/c eine richtige "user-agent" wurde noch nicht definiert haben, müssen Sie möglicherweise verwenden, curl; us3.php.net/curl
- MAMP 1.9.4
- Präzision, die das gleiche problem mit Curl. Hat nichts zu tun mit Google jede URL, die mit nichts zurück. Ich Wette, es ist mein ISP.
- Finden Sie eine der anderen Lösungen zu sorgen und die allow_url_fopen ist wahr.
- Können Sie versuchen, mit
file_get_contents
mit einer numerischen ip-Adresse die website und sehen, ob das funktioniert?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Aus der Dokumentation für
file_get_contents
:Überprüfen Sie in Ihrem
php.ini
soallow_url_fopen
eingestellt iston
.EDIT:
Habe ich nicht bemerkt, dass Sie eigentlich nutzen könnten
file_get_contents
lokal, also ich denke jetzt, dass dies etwas zu tun mit Ihremfirewall settings
.Versuchen Sie auch, um die
user_agent
in Ihremphp.ini
wenn nicht schon geschehen.php.ini
Datei, die Sie suchen? Wenn Sie nicht versuchen, einephpInfo()
um zu sehen welchesphp.ini
geladen wird.httpd
zu verweigern Verbindung. Keine Ahnung, warum ich das getan habe, weil ich gar nicht weiß, washttpd
eigentlich ist. Wahrscheinlich die pop-UPS von meiner Firewall, wo nervt mich, und ich tötete ihn. btw auch Curl funktioniert jetzt, Zuper 🙂httpd
config-Einstellung, die Sie gesetzt hatte, zu "verweigern" @FFish? Was war der Pfad und der spezifische name der Einstellung: ich bin auf der Suche, um zu überprüfen, habe ich nicht das gleicheMüssen Sie auch überprüfen, in
PHP.ini
Dateiaktivieren oder nicht, wenn nicht, dann aktivieren Sie einfach, dass durch das entfernen ; Zeichen
Dies ist möglicherweise eine Einstellung in deiner php.ini-Datei. Es ist eine Einstellung allow_url_fopen, die aktiviert/deaktiviert die Funktion zum öffnen von remote-Dateien aus php. Aus Sicherheitsgründen ist dies in der Regel standardmäßig deaktiviert. Sie können Sie in Ihrer php.ini durch hinzufügen der folgenden Zeile:
Wieder, bewusst sein, die Sicherheitsrisiken bei der Verwendung dieser Funktion.
http://php.net/manual/en/filesystem.configuration.php
allow_url_fopen = On
Nichts 🙁Versuchen, diese Funktion anstelle von file_get_contents():
Es kann genauso verwendet werden wie file_get_contents(), aber nutzt locken.
CURL installieren auf Ubuntu (oder anderen unix-ähnlichen Betriebssystem mit aptitude):
Siehe auch cURL
In die zweite, die Sie versuchen zu öffnen, eine Datei mit dem Namen localhost in dem aktuellen Ordner, die nicht vorhanden ist und somit ein Fehler ausgegeben. Verwenden http://localhost statt. Und zu machen, dass Arbeit, die Sie haben zu setzen allow_furl_open.
War ich mit file_get_contents auf diese Weise:
file_get_contents("https://api.twitter.com/1/statuses/user_timeline.json?include_entities=true&include_rts=true&screen_name=".$screenname."&count=5");
... Und das hat nicht funktioniert, also änderte ich die https-zu-http und nach, dass es gut funktioniert.
rawurlencode
sollte verwendet werden, bei der Verwendung von Abfragezeichenfolgen ($_GET[]) infile_get_contents