Mettre en place une notification par email des erreurs PHP
Dans certaines conditions, il peut être souhaitable d'être notifié rapidement des erreurs PHP qui peuvent apparaître sur un serveur. Ce guide vous propose une solution pour mettre en place de telles notifications.
Installez le Simple Event Correlator :
command apt-get install sec
Créez un dossier destiné à contenir vos fichiers de configuration :
command mkdir --parent "/etc/sec"
Créez le fichier de configuration de la notification par e-mail des erreurs PHP pour Apache 2 :
command echo '# Capture error lines and store them in php-errors type=Single ptype=RegExp pattern=^\[.+\] \[error\] \[client .+\] PHP .+$ desc=PHP error or warning action=add php-errors $0 # Report errors every minute if php-errors is set type=Calendar time=* * * * * desc=Mail PHP errors context=php-errors action=report php-errors /usr/bin/mail -s "PHP errors" root@localhost; delete php-errors; ' > "/etc/sec/apache2-php-errors.conf"
Créez le fichier de configuration de la notification par e-mail des erreurs PHP pour LigHTTPd :
command echo '# Capture error lines and store them in php-errors type=Single ptype=RegExp pattern=^.+: \(mod_fastcgi\.c\..+\) .+$ desc=PHP error or warning action=add php-errors $0 # Report errors every minute if php-errors is set type=Calendar time=* * * * * desc=Mail PHP errors context=php-errors action=report php-errors /usr/bin/mail -s "PHP errors" root@localhost; delete php-errors; ' > "/etc/sec/lighttpd-php-errors.conf"
Configurez le démon de notification (pour Apache 2 ou Lighttpd) :
if [ -d "/var/log/apache2" ]; then command echo ' # PHP monitoring defaults RUN_DAEMON="yes" DAEMON_ARGS="-conf=/etc/sec/apache2-php-errors.conf -input=/var/log/apache2/*error.log -pid=/var/run/sec.pid -detach -syslog=daemon" ' >> "/etc/default/sec" elif [ -d "/var/log/lighttpd" ]; then command echo ' # PHP monitoring defaults RUN_DAEMON="yes" DAEMON_ARGS="-conf=/etc/sec/lighttpd-php-errors.conf -input=/var/log/lighttpd/*error.log -pid=/var/run/sec.pid -detach -syslog=daemon" ' >> "/etc/default/sec" fi
Lancez le démon :
/etc/init.d/sec start
Vous recevrez maintenant les notifications à l'adresse recevant les mails du compte root de votre serveur.
Remerciements
- Merci aux développeurs de S.E.C., le Simple Event Correlator.
- Merci à Garret de powdahound.com pour son article Emails alerts for PHP errors via SEC.
- Merci à GuiguiAbloc pour m'avoir fait découvrir S.E.C. dans son article Interception des erreurs applicatives dans Nagios avec SEC et Prelude-lml.