【发布时间】:2015-05-11 06:08: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 忽略调试设置并在没有调试堆栈跟踪的情况下显示错误,即使启用了调试模式。
任何人都可以在这里提供帮助,至少提供一些提示,我应该从哪里开始寻找?
【问题讨论】:
-
也许apache的日志文件里面有更多的信息?
-
这怎么可能相关? Yii 错误处理非常完美。它捕获错误并显示正确的消息。这里唯一的问题是,为什么它会忽略
YII_DEBUG设置并像禁用调试模式一样? -
好的,现在我明白了...可能是因为您需要在包含 yii.php/yiilite.php 之前定义 YII_DEBUG?
-
我想你不明白! :> 再次阅读问题。
YII_DEBUG常量被正确定义并且被正确设置为true。只是,由于某些我不知道的原因,Yii 忽略了它并采取行动,就像将其设置为false或根本未设置一样。 -
你在调用网格视图之后调用 die() 吗?如果您浏览评论部分,则会看到有关死亡的注释。 yiiframework.com/doc/guide/1.1/en/topics.logging
标签: php debugging yii stack-trace