2008-12-01 4 views
21

Was ist die beste Methode zum Ausblenden von PHP-Fehlern im Browser angezeigt werden?Die beste Methode zur Unterdrückung von PHP-Fehlern auf Produktionsservern

Wäre es folgendes zu verwenden:

ini_set("display_errors", 1); 

Alle Best-Practice-Tipps und würde geschätzt!

Ich protokolliere die Fehler, ich möchte nur sicherstellen, dass das Setzen des display_errors-Wertes auf off (oder 0) nicht verhindert, dass Fehler protokolliert werden.

+0

Tun Sie wie gesagt und Ihre Fehler werden nicht angezeigt, aber werden protokolliert. –

+0

Ich mag das Wort "Besser" als das "Beste". – kta

Antwort

46

Der beste Weg ist natürlich, Ihre Fehler zu protokollieren, anstatt sie anzuzeigen oder zu ignorieren.

In diesem Beispiel werden die Fehler in Syslog protokolliert, anstatt sie im Browser anzuzeigen.

ini_set("display_errors", 0); 
ini_set("log_errors", 1); 

//Define where do you want the log to go, syslog or a file of your liking with 
ini_set("error_log", "syslog"); // or ini_set("error_log", "/path/to/syslog/file"); 
+0

Als Heads-up als Ersatz für "syslog" können Sie einen Dateipfad platzieren und das Protokoll an den von Ihnen gewünschten Ort schreiben. –

3

Vorausgesetzt, dass Sie die Kontrolle über die php.ini-Datei sind, können Sie diese Änderungen global innerhalb dieser Datei machen, anstatt den ini_set Code mit in Ihren PHP-Dateien rumliegen (die Sie vielleicht in einem setzen vergessen Ihrer Dateien eines Tages, was in der Produktion schlecht sein könnte).

1

Sie können auch Apache .htaccess verwenden, um Fehler zu protokollieren, ohne den Code zu berühren:

<IfModule mod_php5.c> 
    php_flag  display_errors Off 
    php_flag  log_errors  On 
    php_value  error_log  logs/errors 
</IfModule> 
+0

Ich würde lieber php.ini als httpd.conf verwenden, es wird klarer –

0

Der beste Weg? Beheben Sie die Fehler!

Wenn Sie eine schnelle temporäre Lösung benötigen, dann ist es in Ordnung, display_errors auszuschalten, aber stellen Sie sicher, dass Sie sie irgendwo aufzeichnen, weil diese Einstellung ernsthafte/parse Fehler sonst stillschweigend macht.

1

Die PHP-Verteilungsdateien senden leider eine gemischte Meldung über die Handhabung von Fehlermeldungen. Die Standarddatei php.ini enthält einige Einstellungen, die für Produktionsserver geeignet sind, und andere, die für Entwicklungsserver besser geeignet sind. Sie sollten alle Fehler in dev (error_reporting = E_ALL und display_errors = On) und in prod (display_errors = off aber Punkt log_errors irgendwo) einschalten. Versuchen Sie jedoch, sicherzustellen, dass keine Fehler vorliegen (oder dass sie bearbeitet werden).

2

Legen Sie eine Umgebungsvariable auf Ihrem Entwicklungscomputer fest. Anschließend können Sie Ihre Umgebung am Anfang Ihres Codes überprüfen, um sicherzustellen, dass Sie sich in der Entwicklungsumgebung befinden. dann können Sie die Fehlermeldungsstufe von PHP festlegen, indem Sie die error_reporting() - Funktion verwenden.

if (isset($_ENV['MY_APP_MODE']) && ($_ENV['MY_APP_MODE'] == 'devel')) { 
    error_reporting(E_ALL); 
} else { 
    error_reporting(0); 
}