2010-11-15 18 views

Antwort

3

Wahrscheinlich kann Ihr Server keine Verbindung zu einer externen Ressource herstellen, z. B. wegen Firewall-Einschränkungen.

+2

... oder Google ist down, aber das schien nicht wahrscheinlich: D – Hamish

+0

Wie kann ich dieses Problem beheben? – Bruno

+0

Btw, ich benutzte Google nur zum Beispiel, es funktioniert, aber mit dem Link, den ich will, ist nicht. – Bruno

0

file_get_contents funktioniert überhaupt nicht gut mit Remote-Dateien erhalten und sollte nicht verwendet werden. Langsame Netzwerkverbindungen oder Weiterleitungen werden nicht behandelt und Fehlercodes werden nicht zurückgegeben. Sie sollten stattdessen curl verwenden, um entfernte Dateien abzurufen.

Es ist ein Beispiel im Handbuch für curl_exec: http://us3.php.net/manual/en/function.curl-exec.php

+5

Ich versichere Ihnen, dass file_get_contents() problemlos mit Remote-Dateien funktioniert und * in * den meisten * Situationen * verwendet werden kann. Außerdem folgt es den richtigen HTTP-Weiterleitungen, aber es wurden kürzlich Fehler mit dieser Funktion gemeldet, von denen ich annehme, dass sie sich auf sie beziehen. Schließlich, ja, wenn Sie die HTTP-Statuscodes benötigen, sollten Sie etwas robusteres verwenden. Wenn Sie einfach einen Fehler finden müssen, dann können Sie file_get_contents() einfach verwenden. Auch das ist gut für viele Situationen, aber sicherlich nicht für alle, wie Sie bereits betont haben. – Brad

+1

Down Voting eine richtige Antwort? Ich habe nicht gesagt, es hat nicht funktioniert, ich sagte, es funktioniert nicht gut. curl ist ein viel zuverlässigeres und robusteres Werkzeug, um es zu benutzen, wie Sie gesagt haben. Der Zeitüberschreitungsfehler, der am wahrscheinlichsten auftritt, würde nicht mit einer Welligkeit auftreten, da die Welligkeit standardmäßig auf das Netzwerk-Zeitlimit (d. H. 2 Minuten) eingestellt ist. –

0

Es könnte Server-Seite Problem sein, könnte sein, der Server nicht aus der Ferne mit anderen Server kommunizieren kann. Sie müssen mit dem Serveradministrator kommunizieren.

2

Ich hatte das gleiche Problem, konnte nicht mit file_get_contents() herunterladen, aber mit curl in der Befehlszeile für die gleiche URL funktionierte gut. Es hat sich herausgestellt, dass es versucht hat, sich über IPv6 zu verbinden, was fehlgeschlagen ist.

Ich löste es durch Deaktivieren von IPv6 in meinen Kernel-Parameter.

+0

Anstatt IPv6 auszuschalten, sollten Sie versuchen, es zu beheben. Sie können auch ['file_get_contents()' versuchen, eine Verbindung über IPv6 und dann auch über IPv4 herzustellen] (https://www.slightfuture.com/webdev/php-file-contents-dual-stack), falls dies fehlschlägt. – Aeyoun

Verwandte Themen