Wie kann ich die Warnung der Funktion file_get_contents () in PHP behandeln?
Schrieb ich ein PHP-code wie dieser
$site="http://www.google.com";
$content = file_get_content($site);
echo $content;
Aber wenn ich entfernen Sie "http://" aus $site
bekomme ich die folgende Warnung:
Warnung:
file_get_contents(www.google.com)
[Funktion.file-get-contents]: failed
to open stream:
Versuchte ich try
und catch
aber es hat nicht funktioniert.
InformationsquelleAutor der Frage Waseem | 2008-11-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Schritt 1: überprüfen Sie den Rückgabecode:
if($content === FALSE) { //handle error here... }
Schritt 2: unterdrücken Sie die Warnung, indem Sie eine error-control-operator (d.h.
@
) vor dem Aufruf file_get_contents():$content = @file_get_contents($site);
InformationsquelleAutor der Antwort Roel
Können Sie auch festlegen der Fehlerbehandlung als anonyme Funktion , ruft eine Ausnahme und verwenden einen try /catch an exception.
Scheint wie eine Menge code zu fangen einen kleinen Fehler, aber wenn man mit Ausnahmen, die während Ihrer app, müssten Sie nur tun dies einmal Weise an der Spitze (in einer mitgelieferten config-Datei, zum Beispiel), und es wird konvertieren Sie alle Ihre Fehler auf Ausnahmen ganz.
InformationsquelleAutor der Antwort enobrev
Meine Lieblings-Weg, dies zu tun ist ziemlich einfach:
Fand ich diesen, nachdem das Experimentieren mit der
try/catch
von @enobrev oben, aber dies ermöglicht für weniger langwierigen (und IMO, mehr lesbaren) code. Wir verwenden Sie einfacherror_get_last
um den text des letzten Fehlers, undfile_get_contents
zurück, im Fehlerfall false, so dass eine einfache "wenn" fangen kann.InformationsquelleAutor der Antwort Laurie
Können Sie voranstellen eines @:
$content = @file_get_contents($site);
Diese wird unterdrückt jegliche Warnung - sparsam verwenden!. Sehen Fehler-Kontroll-Operatoren
Edit: Beim entfernen der 'http://" du bist nicht mehr auf der Suche nach einem web-Seite, sondern eine Datei auf Ihrer Festplatte genannt "www.google....."
InformationsquelleAutor der Antwort Greg
Eine alternative ist zum unterdrücken des Fehlers und auch werfen eine exception, die man fangen kann später. Dies ist besonders nützlich, wenn mehrere Anrufe zu file_get_contents() in deinem code, da brauchen Sie nicht zu unterdrücken und zu behandeln, alle von Ihnen manuell. Stattdessen mehrere Anrufe gemacht werden können, um diese Funktion in einem einzigen try - /catch-block.
InformationsquelleAutor der Antwort Aram Kocharyan
Hier ist, wie ich es gemacht habe... Keine Notwendigkeit für die try-catch-block... Die beste Lösung ist immer die einfachste... Genießen!
InformationsquelleAutor der Antwort
InformationsquelleAutor der Antwort RafaSashi
Hier ist, wie ich handle:
InformationsquelleAutor der Antwort Jrm
Die beste Sache wäre, um Ihre eigenen Fehler-und exception-Handlern, die tun etwas nützliches wie logging in eine Datei oder per E-Mail kritische diejenigen.
http://www.php.net/set_error_handler
InformationsquelleAutor der Antwort
Könnte man mit diesem Skript
InformationsquelleAutor der Antwort ogie
Seit PHP 4 verwenden error_reporting():
InformationsquelleAutor der Antwort Bob Stein
2018-Lösung:
Hier sind Tonnen von Antworten und nichts funktioniert richtig. Wenn Sie unterdrücken
file_get_contents
mit einem@
Sie erhaltenNULL
und nichtfalse
wie einige Benutzer behaupten. So haben Sie, um dies zu tun:InformationsquelleAutor der Antwort AlexioVay
Diese werden versuchen, dir die Daten, wenn es nicht funktioniert, wird es zu fangen die Fehler und erlauben Ihnen, alles zu tun, müssen Sie innerhalb des catch.
InformationsquelleAutor der Antwort Brad
Ändern Sie die Datei php.ini
InformationsquelleAutor der Antwort Antério Vieira
Muss man auch die
allow_url_use =
in deiner php.ini mehr erhalten Warnungen.
InformationsquelleAutor der Antwort GHAV
Sollten Sie verwenden, file_exists () - Funktion vor der Verwendung file_get_contents().
Mit dieser Weise werden Sie vermeiden Sie die php-Warnung.
InformationsquelleAutor der Antwort Jesús Díaz
InformationsquelleAutor der Antwort kta