Fehlermeldung unterdrücken
Lothar
- php
Hi, (wie) kann ich die Fehlermeldung unterdrücken, wenn die Datei, die in require_once angegeben ist, nicht vorhanden ist? Danke Lothar
Hallo,
(wie) kann ich die Fehlermeldung unterdrücken, wenn die Datei, die in require_once angegeben ist, nicht vorhanden ist?
indem du include_once
verwendest, dann gibts nur eine Warnung.
Gruß
Kalk
Hi, (wie) kann ich die Fehlermeldung unterdrücken, wenn die Datei, die in require_once angegeben ist, nicht vorhanden ist?
if ( is_file( $file ) && is_readable( $file ) ) {
require_once( $file );
}
Das ist aber blöd, denn dann stellt sich die Frage warum in aller Welt require_once und nicht include_once verwendet werden soll?
Die bei Verwendung von include_once im Fehlerfall fällige Warnung könnte man mit error_reporting( E_ALL & ~E_WARNING ) unterdrücken.
Willst Du aber den Fehler (der ja keiner sein soll) abfangen und selbst reagieren, dann gehe entweder wie oben vor (da musst Du selbst an alles denken) oder probiere try … catch
try {
require_once( $file );
} catch (Exception $e) {
echo 'Exception abgefangen: ', $e->getMessage(), "\n";
}
Eine Frage bleibt noch: Willst Du nicht vielleicht lieber readfile( $file )? Erwartest Du denn PHP in der zu inkludierenden Datei? Falls nicht kann Dein Vorhaben in einer Katastrophe enden.
Hallo Lothar,
(wie) kann ich die Fehlermeldung unterdrücken, wenn die Datei, die in require_once angegeben ist, nicht vorhanden ist?
Mit error_reporting(0);
kannst du die Fehlermeldungen komplett abschalten. Bei Verzicht auf require_once("nicht_vorhandene_Datei")
gibt es die Fehlermeldung natürlich auch nicht.
Vielleicht solltest du etwas mehr mitteilen.
Bis demnächst
Matthias
Hallo,
Verzicht auf
require_once("nicht_vorhandene_Datei")
finde ich jetzt die schönste Lösung… (+1)
Gruß
Kalk
finde ich jetzt die schönste Lösung…
Die kann aber in Abhängigkeit von der (bestenfalls bruchstückhaft bekannten) Aufgabe immer noch falsch sein. Wenn der TO schon require_once und include_once nicht wirklich kennt, kann readfile() sehr geeigneter sein.
Hallo,
schönste Lösung…
noch falsch sein.
schön und falsch schließt sich ja nicht gegenseitig aus...
Gruß
Kalk
Zudem folgt auf require_once im Fehlerfall stets (sofern nicht mit try … catch abgefangen) ein PROGRAMMABRUCH. Die Warnung oder den Fehler mittels error_reporting(0) nicht anzuzeigen ist bei aller Schönheit "eher nicht hilfreich".
Hallo,
"eher nicht hilfreich".
bitte lies genauer. Ich bezog mich explizit nicht auf das error-reporting.
Gruß
Kalk
Ich bezog mich explizit nicht auf das error-reporting.
Das ist mir klar. Das stand aber in der gelobten Antwort halt mit drin.
Ich denke, die umfassendste Antwort ist:
try {
### Wenn PHP in $file erwartet wird und "abgearbeitet" werden soll:
## Falls Datei sonst womöglich mehrfach geöffnet wird:
# require_once( $file );
## Falls Datei NICHT womöglich mehrfach geöffnet wird:
# require( $file );
### Falls Inhalt nur ausgegeben werden soll:
readfile( $file );
} catch ( Exception $e ) {
echo 'Exception abgefangen: ', $e->getMessage(), "\n";
# (oder was auch immer geschehen soll.)
}
Die löst auch das Problem, dass die Datei womöglich in der Tausenstelsekunde zwischen is_file() && is_readable() und dem Leseversuch gelöscht wird.
Hello,
(wie) kann ich die Fehlermeldung unterdrücken, wenn die Datei, die in require_once angegeben ist, nicht vorhanden ist?
Mit
error_reporting(0);
kannst du die Fehlermeldungen komplett abschalten. Bei Verzicht aufrequire_once("nicht_vorhandene_Datei")
gibt es die Fehlermeldung natürlich auch nicht.
Fehlermeldungen und Fehlerreaktionen in PHP komplett abzuschalten ist die schlechteste Idee, die ich in diesem Zusammenhang jemals gelesen habe ;-P
Bitte nimm den Vorschlag zurück.
Glück Auf
Tom vom Berg
Hallo TS,
(wie) kann ich die Fehlermeldung unterdrücken […]?
Mit
error_reporting(0);
kannst du die Fehlermeldungen komplett abschalten. Fehlermeldungen und Fehlerreaktionen in PHP komplett abzuschalten ist die schlechteste Idee, die ich in diesem Zusammenhang jemals gelesen habe ;-P
Ja. Ebenso wie der Wunsch, die Fehlermeldung zu unterdrücken.
Bis demnächst
Matthias
Hello,
(wie) kann ich die Fehlermeldung unterdrücken, wenn die Datei, die in require_once angegeben ist, nicht vorhanden ist?
Das solltest Du gar nicht erst versuchen. Denn mit Require(_Once) werden nur Dateien eingebunden, die zwingend erforderlich sind.
Du kannst aber vorher nachschauen, ob es die Datei gibt und ob dein Script sie lesen darf. Das ist dann zwar nicht atomar (die Datei könnte wenige Millisekunden später schon nicht mehr lesbar sein), aber für die Praxis ist es meistens hinreichend, weil Das Script ja bei include_once() spätestens abbrechen würde, wenn die Verhältnisse sich verschlechtert haben.
Glück Auf
Tom vom Berg