Перехват PHP Fatal Error в Yii

Чтобы перехватить Fatal Error, нужно определить shutdown функцию, и проверять в ней тип ошибки.

[code]

function exception_shutdown() { $error = error_get_last();

if (is_array($error) != FALSE)
{
    if (isset($error['type']) != FALSE)
    {
        if ($error['type'] == 1)
        {
            $exception = new ErrorException($error['message'], 0, $error['type'], $error['file'], $error['line']);

            Yii::app()->handleException($exception);
        }
    }
}

}

register_shutdown_function('exception_shutdown'); [/code]

К моменту вызова shutdown_function, перехват исключений Yii уже не работает, но все его классы доступны, а значит обработать ошибку можно вручную.

Делать подобный перехват ошибок хорошо тем, что в этом случае они будут обработаны как исключение, и значит будут записаны в лог ошибок приложения, или отправлены на e-mail администратору, в зависимости от настроек приложения.

03.06.2014