2009-12-01 11 views
15

Diese Frage wurde zuvor auf eine allgemeinere Art und Weise gestellt. Ich möchte Fehlermeldungen auf einer bestimmten Seite auf meinem Produktionsserver anzeigen, und ich habe keinen Zugriff auf die Datei php.ini. Was ist der beste Weg, um alle Fehler und Warnungen auf einer bestimmten PHP-Seite auf Ihrem Produktionsserver zu aktivieren?PHP-Produktionsserver - Fehlermeldungen aktivieren

Ich habe versucht ERROR_REPORTING(E_ALL);.

Antwort

32

Fehler zu aktivieren, Sie error_reporting vor dem Punkt verwenden müssen, wo diejenigen ausgelöst werden (zum Beispiel am Anfang Ihres PHP-Skript):

error_reporting(E_ALL); 

Und der Fehler angezeigt haben, sollten Sie display_errors konfigurieren:

ini_set('display_errors', 'On'); 

(Dieser sollte auf einem Produktionsserver deaktiviert werden, was bedeutet, Sie können es auf diese Weise ermöglichen, auch nach configure mit d error_reporting)


Natürlich ist das alles in einem if Block eingekapselt werden, um sicherzustellen, dass nur Sie die Fehlermeldungen sehen - vor allem, wenn Sie diese auf einer Live-Produktion Website tun; zum Beispiel:

if ($_SESSION['is_admin']) 
{ 
    error_reporting(E_ALL); 
    ini_set('display_errors', 'On'); 
} 


Und die Dinge ein wenig schöner zu bekommen, möchten Sie vielleicht auch html_errors konfigurieren:

ini_set('html_errors', 'On'); 
+0

Ich mag die Idee, Fehler zu aktivieren, wenn der Administrator angemeldet ist, und dann, wenn ich die Site überprüfe, kann ich sofort sehen, was falsch ist, ohne Fehler einschalten zu müssen. Danke – andrew

+0

Gern geschehen (ich benutze manchmal auch diesen Trick - es ist ein einfacher Weg, viel einfacher, als Logfiles durchzugehen) :-) Viel Spaß! –

+2

Ich habe diese Antwort als kanonische Antwort auf "Wie aktiviere ich Fehlerberichte?" in das PHP-Tag-Wiki. –

1

Ein anderes Verfahren würde alle zusammen sein, einen Fehlerhandler registrieren: set_error_handler

Auf diese Weise können Sie wählen, was mit den Fehlern zu tun ist: Mailen Sie sie an Admin, zeigen Sie freundliche Fehlermeldung an, loggen Sie sich in Datei/db, ...

+0

Das klingt interessant, Senden von ihnen an meine E-Mail wäre besonders nützlich, krank zu lesen, dass danke – andrew

1

Eine andere Sache zu beachten ist, dass Sie wahrscheinlich nicht nur Anzeige Fehler möchten, möchten Sie sie in Datei/Datenbank protokollieren. Es genügt nicht, den Benutzern in der Produktionsumgebung Fehler anzuzeigen. Wenn Sie sie bitten, die Probleme zu melden, werden Sie nicht wissen, was mit Ihrem Server los ist, bis es zu spät ist. Stellen Sie in Ihrer Basisfehler- und Ausnahmebehandlungsroutine sicher, dass eine Logik vorhanden ist, die das Problem (so viele Debuginformationen wie möglich - Stapelüberwachung, Benutzer-IP, Browser, Anwendungsversion usw.) im permanenten Speicher aufzeichnet.

4

sollten Sie sie wirklich nicht auf einem Produktionsserver anzeigen. Der beste Weg ist, ein Logging-System zu erstellen.

Denken Sie daran, es wiederverwendbar zu machen!