На моей странице (с CakePHP 2.4) я добавил функциональность, когда есть запрос ajax, если пользователь не вошел в систему, а затем выбрасывает ошибку 401 Unauthorized HTTP, поэтому ajax может ее поймать и знает, что должен перенаправить логин. Но проблема в том, что ErrorHandler не ловит его, и это показывает, как Uncaught exception
:CakePHP: ОшибкаHandler перестала работать
PHP Fatal error: Uncaught exception 'UnauthorizedException' with message 'Su sesión ha terminado. Por favor ingrese nuevamente' in D:\wamp\www\app\Controller\AppController.php:121
Дело в том, что я изменил некоторые значения реализовать собственный обработчик, но потом я изменил свое мнение, и я вернулся обратно по умолчанию, так что, наверное, я что-то пропустил. И теперь не поймает никакой ошибки, даже 404, а также от ajax и обычных HTTP-запросов.
Вот мой AppController::beforeFilter
код:
public function beforeFilter()
{
if($this->Session->check('login.language'))
{
Configure::write('Config.language', $this->Session->read('login.language'));
}
else
{
Configure::write('Config.language', "spa");
}
parent::beforeFilter();
//Here is the login check part
if(!$this->Auth->user('id') && $this->request->is('ajax') && !(in_array($this->request->params['action'], array('login', 'cambiar_idioma'))))
{
throw new UnauthorizedException(__("Su sesión ha terminado. Por favor ingrese nuevamente"));
}
}
Обработчики CONFIG в core.php:
Configure::write('Error', array(
'handler' => 'ErrorHandler::handleError',
'level' => E_ALL & ~E_DEPRECATED & ~E_STRICT,
'trace' => true
));
Configure::write('Exception', array(
'handler' => 'ErrorHandler::handleException',
'renderer' => 'ExceptionRenderer',
'log' => true
));
Configure::write('debug', 2);
Таким образом, любые идеи, почему это не отлов исключений?