Yii 即使在调试模式下也显示标准错误
Yii displays standard error even in debug mode
我的 CGridView
有一个错误。其中一列尝试从非对象读取 属性。就在渲染此网格视图的行之前(即 <?php $this->widget('GridView', array (
上方)我放置了以下代码:
<?php
echo 'YII_DEBUG = '.print_r(YII_DEBUG, TRUE);
var_dump(YII_DEBUG);
echo 'YII_TRACE_LEVEL = '.print_r(YII_TRACE_LEVEL, TRUE);
var_dump(YII_TRACE_LEVEL);
die();
?>
它给了我以下结果:
YII_DEBUG = 1
bool(true)
YII_TRACE_LEVEL = 3
int(3)
然而,当我删除或注释掉这段代码时,紧接着的下一行(发生错误的地方)不会导致 Yii 呈现关于错误的典型的、完整的堆栈调试信息(包括文件、行和堆栈跟踪) .相反,我看到一条单行错误消息,用 site/error
视图呈现,正如我应该看到的那样,当调试实际上被关闭时(但它不是):
几个月来我一直在努力解决这个问题,但我不知道是什么导致 Yii 忽略调试设置并在没有调试堆栈跟踪的情况下显示错误,即使在启用调试模式时也是如此。
任何人都可以在这里提供帮助,至少提供一些提示,我应该从哪里开始寻找?
这是设计使然,因为 recent change in Yii 1.1.16。需要放一个:
'errorHandler'=>array(
'errorAction' => YII_DEBUG ? null : 'site/error',
),
到应用程序的配置数组,在 1.1.16 中具有与 Yii 早期版本相同的行为——即当 YII_DEBUG
设置为 [=12= 时,始终呈现全栈错误].
我的 CGridView
有一个错误。其中一列尝试从非对象读取 属性。就在渲染此网格视图的行之前(即 <?php $this->widget('GridView', array (
上方)我放置了以下代码:
<?php
echo 'YII_DEBUG = '.print_r(YII_DEBUG, TRUE);
var_dump(YII_DEBUG);
echo 'YII_TRACE_LEVEL = '.print_r(YII_TRACE_LEVEL, TRUE);
var_dump(YII_TRACE_LEVEL);
die();
?>
它给了我以下结果:
YII_DEBUG = 1
bool(true)
YII_TRACE_LEVEL = 3
int(3)
然而,当我删除或注释掉这段代码时,紧接着的下一行(发生错误的地方)不会导致 Yii 呈现关于错误的典型的、完整的堆栈调试信息(包括文件、行和堆栈跟踪) .相反,我看到一条单行错误消息,用 site/error
视图呈现,正如我应该看到的那样,当调试实际上被关闭时(但它不是):
几个月来我一直在努力解决这个问题,但我不知道是什么导致 Yii 忽略调试设置并在没有调试堆栈跟踪的情况下显示错误,即使在启用调试模式时也是如此。
任何人都可以在这里提供帮助,至少提供一些提示,我应该从哪里开始寻找?
这是设计使然,因为 recent change in Yii 1.1.16。需要放一个:
'errorHandler'=>array(
'errorAction' => YII_DEBUG ? null : 'site/error',
),
到应用程序的配置数组,在 1.1.16 中具有与 Yii 早期版本相同的行为——即当 YII_DEBUG
设置为 [=12= 时,始终呈现全栈错误].