【发布时间】:2014-05-13 15:26:09
【问题描述】:
我们目前正在使用 CakePHP 2.4.7 和自定义错误处理程序。自定义错误处理程序适用于通过 HTTP 或通过 CronDispatcher 发出的每个请求。
不幸的是,当向我们的控制台命令之一发出控制台请求时,错误处理程序被忽略了。
请看下面的例子:
core.php:
App::uses('SentryErrorHandler', 'Sentry.Lib');
Configure::write('Sentry', array(
//'production_only' => true, // true is default value -> no error in sentry when debug
'PHP' => array(
'server' => 'https://XXX:YYY@app.getsentry.com/1234'
)
));
Configure::write('Error', array(
'handler' => 'SentryErrorHandler::handleError',
'level' => E_ALL & ~E_DEPRECATED,
'trace' => true
));
Configure::write('Exception', array(
'handler' => 'SentryErrorHandler::handleException',
'renderer' => 'ExceptionRenderer',
'log' => true
));
XYController.php / XYShell.php:
function test() {
die(pr([]['test']));
}
在这两种情况下,都会抛出正确的错误:
PHP Parse error: syntax error, unexpected '[' in /vagrant/htdocs/app/Console/Command/XYShell.php on line 50
Parse error: syntax error, unexpected '[' in /vagrant/htdocs/app/Console/Command/XYShell.php on line 50
Fatal Error Error: syntax error, unexpected '[' in [/vagrant/htdocs/app/Console/Command/XYShell.php, line 50]
但是当通过 ./cake XY 测试调用上述方法时,看起来错误没有正确传播到自定义错误处理程序。
我错过了什么吗?
【问题讨论】:
-
` 或通过 CronDispatcher` 与您的问题无关,但“哦,天哪...”。不需要 cron 调度程序。
-
我知道,我们正在替换越来越多的 cron 调度程序代码 ;)
标签: php cakephp error-handling