Нет способа поймать фатальную ошибку или ошибку разбора в PHP. Но ..
В 5.2 они добавили error_get_last () . Вы можете вызвать его внутри функции отключения и выполнить регистрацию. Непроверенный пример 5.3 для отправки почты при фатальной ошибке:
<?php
register_shutdown_function(function(){
$err = error_get_last();
if(is_array($err) && array_key_exists('type', $err) $err['type'] > 0
&& ($err['type'] == E_ERROR || $err['type'] == E_PARSE) {
error_log("Oh noes, a fatal: " . var_export($err, true), 1, 'fatals@example.com');
}
});
(Вам понадобится обратный вызов, если вы не используете 5.3 и не можете выполнять анонимные функции.)
К сожалению, поскольку это обрабатывается в функции отключения, есть вероятность, что заголовки уже были отправлены, и вы не сможете предоставить что-либо полезное для пользователя. Это зависит от остальной части приложения, поэтому оно может сработать для вас. Попробуйте и узнайте!