-1

내 페이지 (CakePHP 2.4)에서 사용자가 로그인하지 않은 상태에서 Ajax 요청이있을 때 기능을 추가 한 다음 401 Unauthorized HTTP 오류를 발생시켜 Ajax가 catch 할 수있게했습니다. 그것이 로그인으로 리디렉션해야한다는 것을 알고 있습니다. 그러나 문제는 ErrorHandler를가 그것을 잡을하지 않는다는 것입니다, 그리고 Uncaught exception으로 그것을 보여줍니다CakePHP : ErrorHandler가 작동을 멈췄습니다.

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 요청도 있습니다. core.php에서 Config

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")); 
    } 

} 

핸들러 :

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

그래서, 어떤 아이디어가 왜 예외를 잡기되지

여기 내 AppController::beforeFilter 코드입니까?

답변

0

마지막으로 답을 얻었습니다. Cake를 다시 설치 한 후 페이지 파일의 모든 내용을 파일로 옮긴 후 jpGraph 라이브러리가 Cake 오류 처리와 충돌하고 있음을 발견했습니다. 파일의 맨 위에서 가져 오기 라이브러리를 가져 왔을 때마다 모든 요청이 엉망이되어 버렸기 때문에 각 기능으로 옮겨서 의도 한대로 작동했습니다.