set_error_handler
позволяет указать пользовательскую функцию обработки ошибок для решения, что делать с определенными (но не нефатальными) ошибками.Затем вы можете обрабатывать определенные типы ошибок любым способом, который сочтете необходимым, например, уведомлять системного администратора по электронной почте или сохранять в определенный файл журнала.См. PHP Doc для получения дополнительной информации.
Что касается вашего запроса, вы можете использовать следующий подход:
function myErrorHandler($errno, $errstr, $errfile, $errline)
{
if (!(error_reporting() & $errno)) {
// This error code is not included in error_reporting
return;
}
switch ($errno) {
case E_USER_ERROR:
case E_ERROR:
case E_COMPILE_ERROR:
echo "<b>My ERROR</b> [$errno] $errstr<br />\n";
echo " Fatal error on line $errline in file $errfile";
echo ", PHP " . PHP_VERSION . " (" . PHP_OS . ")<br />\n";
echo "Aborting...<br />\n";
emailErrorFunction($errno,$erstr,$errfile,$errline);
exit(1);
break;
default:
echo "Unknown error type: [$errno] $errstr<br />\n";
break;
}
/* Don't execute PHP internal error handler */
return true;
}
// Report all errors
error_reporting(E_ALL);
// User a custom error handler to print output
set_error_handler( 'myErrorHandler' );
Поскольку эта обработка ошибок не работает для фатальных ошибок (синтаксический анализ ошибок, неопределенные функции и т. Д.), Вам необходимозаписать это на пленку с register_shutdown_function
, как указано в соответствующем вопросе: