Wie fängt Fehler von require() oder include() in PHP?
Ich Schreibe ein script in PHP5 erfordert, dass der code von bestimmten Dateien. Wenn Eine Datei nicht verfügbar ist für die Aufnahme, wird zunächst eine Warnung und dann ein fatal error geworfen werden. Ich würde gerne drucken einer eigenen Fehlermeldung, wenn es nicht möglich war, den code. Ist es möglich, führen einen letzten Befehl, wenn requeire nicht funktioniert? Folgendes hat nicht funktioniert:
require('fileERROR.php5') or die("Unable to load configuration file.");
Ausblenden alle Fehlermeldungen mit error_reporting(0)
gibt nur einen weißen Bildschirm, auch nicht mit error_reporting gibt die PHP-Errors, die ich nicht zeigen möchte.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie dies erreichen, indem Sie mit
set_error_handler
in Verbindung mitErrorException
.Beispiel von der
ErrorException
Seite ist:Sobald Sie haben Fehler werden als Ausnahmen behandelt, die Sie tun können, so etwas wie:
Ich habe gerade mit 'file_exists()':
Ein besserer Ansatz wäre, die Nutzung realpath auf dem Weg zuerst.
realpath
zurückfalse
wenn die Datei nicht vorhanden ist.Könnten Sie sogar Ihre eigenen erfordern-Funktion in Ihrer app namespace umschließt, PHP require-Funktion
Jetzt können Sie Sie überall auf Ihre Dateien
include()
funktioniert einwandfrei und die Datei ist ohne Fehler.Ich würde vorschlagen, Sie nahm einen Blick auf die den letzten Kommentar in der Dokumentation für die set_error_handler() Funktion.
Er schlägt vor, die folgenden als eine Methode (mit einem Beispiel), abfangen schwerer Fehler:
Ich habe nicht versucht, den Vorschlag, aber dies könnte wahrscheinlich sein verwendet in anderen fatalen Fehler-Szenarien.
require
auf nicht-existierende Datei und weiter die Skript-Ausführung. Zu können, würdevoll sterben (d.h. etwas angezeigt, ich möchte aber am Ende mit script Kündigung auch so -- und das ist, was Ihr code zu tun scheint) scheint nicht zu passen in viele Szenarien. Ich gehe davon aus, Skript anzeigen kann, was es will, wenn es sterben würde. Ich möchte verhindern, dass die / Beendigung auf nicht-existierende Datei zugeführtrequire
.Müssen Sie include(). Require(), wenn auf nicht vorhandene Datei, erzeugt einen fatal error und beendet das script, damit Ihr die() wird nicht passieren. Include() wirft nur warnen und dann das script weiter.
php.ini
Konfiguration. Auf meiner Seite (PHP 5.5.4) mit meiner Konfiguration, ändernrequire
zuinclude
bringt absolut keinen Unterschied. Beide werfen hässlich schwerwiegende Fehler, dass ich nicht abfangen kann.Einen einfachen Weg, die ich verwende, ist, dass