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

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


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');

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

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

Теги:
comments powered by HyperComments