在我的页面中(使用CakePHP 2.4),我添加了一个功能,当有ajax请求时,如果用户没有登录,则抛出401 Unauthorized HTTP错误,以便ajax可以捕获它并知道必须重定向登录。但问题是ErrorHandler没有捕获它,它显示为Uncaught exception
:
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"));
}
}
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 :(得分:0)
终于得到了答案。
重新安装Cake后,按文件移动页面文件中的所有内容,我发现jpGraph
库与Cake错误处理相冲突。因为我在文件顶部导入了库,所以每次请求都搞乱了,所以我将它移动到各自的功能并按预期工作。