Wie kann ich alle PHP-Fehler senden auf einer Seite an eine E-Mail laufen?
Frage
Im Prinzip habe ich eine einzelne Seite auf meiner Website, die ich alle php erorrs will, Warnungen, etc mir das Skript ausgeführt wird jedes Mal in einer E-Mail gesendet werden sollte.
Edit:. Dies muss Code sein, der auf der Seite platziert ist, nicht bearbeitet zu php_ini oder so etwas
Edit 2: dies muss alle Fehler fangen und alle Fehler in einer E-Mail am Ende des Skripts
sendenLösung
Sie Setup benötigen eine Fehlerbehandlung und registrieren eine Abschaltfunktion das Mailing zu tun. in einem sehr stark vereinfachten Beispiel, das in etwa so aussehen könnte:
<?php
$__errors = array();
function my_error_handler($code, $message, $file, $line) {
global $__errors;
$__errors[] = sprintf('"%s" (%s line %s)', $message, $file, $line);
}
set_error_handler( 'my_error_handler', E_ALL );
function send_error_log() {
global $__errors;
if ( count( $__errors ) > 0 ) {
foreach ( $__errors as $error ) {
$body . $error . "\n";
}
mail( 'to@example.com', 'error log', $body );
}
}
register_shutdown_function( 'send_error_log' );
?>
Andere Tipps
Wenn Sie versuchen, Probleme mit dem Code zu fangen, kann es effizienter sein, nur Fehlerprotokolle auf Ihrem Webserver aussehen (vorausgesetzt, dass Sie Zugriff haben). Wenn Sie diese in Kurzform möchten, können Sie einen cron-Job schreiben Sie jeden Tag die Post (oder was auch immer).
Wenn Sie keinen Zugriff auf die Fehlerprotokolle, dann einen Fehlerhandler zu schreiben und set_error_hander()
verwendet, ist die beste Wahl. Ich würde noch empfehlen die Fehlerbehandlung schreiben in eine Protokolldatei mit, anstatt Sie eine E-Mail. Wenn Ihre Website keinen Verkehr auf alle Ihre E-Mail-Box wird in kürzester Zeit überfüllt sein.
Das Beste, was Sie tun können, ist wahrscheinlich ein Fehler-Handler, und Einstellung, die mit set_error_handler zu schreiben. Dies wird jedoch nicht umgehen alle mögliche Fehler berücksichtigt.
Sie können eine benutzerdefinierte Funktion für set_error_handler()