-1

На моей странице (с 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); 

Таким образом, любые идеи, почему это не отлов исключений?

ответ

0

Наконец-то получил ответ. После переустановки Cake, перемещая все по файлу страницы по файлу, я обнаружил, что библиотека jpGraph противоречила обработке ошибок Cake. Поскольку я импортировал библиотеку в верхней части файла, она была беспорядочна для каждого запроса, поэтому я переместил ее в соответствующую функцию и работал по назначению.