我不能确定这个问题是否部分归因于流浪汉,但是我在运行Unix的Vagrant盒子中安装了Yii 1.x.
我试图强制一个简单的PHP错误,如控制器中缺少分号,即使我100%确定我有一个错误我没有看到标准的Yii错误页面与堆栈跟踪.这在以前有效,虽然最近似乎已经停止了这种方式的工作.
奇怪的是 – Yii正在输出脚本底部的数据库查询(这是有意的,但我不明白为什么Yii只显示数据库查询.
我的个人配置如下所示:(仅显示部分内容..)
我已经尝试过下面的代码&检查日志,但没有快乐
ini_set('display_errors',true);
error_reporting(E_ALL);
谁能提出任何想法……
return array(
'yiiDebug' => true,
'yiiTraceLevel' => 6,
.....
'components'=>array(
'log' => array(
'class' => 'CLogRouter',
'routes' => array(
'web' => array(
'class' => 'CWebLogRoute',
'levels' => 'profile, trace, info, error, warning, application', // profile, trace, info, error, warning, application
'showInFireBug' => false
),
'file' => array(
'class' => 'CFileLogRoute',
'levels' => 'error, warning, watch', // error, warning, watch
'categories' => 'system.*',
),
array(
'class' => 'CProfileLogRoute',
'levels' => 'error, warning, trace, info, profile', // error, warning, trace, info, profile
),
),
),
),
例如……在我的一个控制器中,我有以下代码:
public function actionDelete($id)
{
$model = $this->loadModel($id);
5e55 // added error here on purpose
}
我希望第二行有关5e55没有位置的错误,但不是收到错误所有我看到的是一个白色的屏幕(加上显示所有查询的Yii应用程序日志等) – 如果我删除yii配置东西输出查询我得到一个100%白色/空白屏幕.
我试过在index.php bootstrap文件中添加各种东西,但没有任何乐趣,我的配置看起来相对正常,但我无法理解为什么错误被报告给浏览器或我的日志.
解决方法:
你通过设置做了正确的事
ini_set('display_errors',true);
error_reporting(E_ALL);
……但是有几个原因导致这可能实际上没有生效.
1)错误报告可能会被脚本中“稍后”的内容再次关闭.因为这些设置基本上只是全局变量,所以任何人都可以设置它们,并且大多数框架都在某些地方被禁用.根据您的代码被“包含”的位置,链中的其他内容可能会调用display_errors – false.
2)可以在运行时禁用更改设置.您的环境可能具有类似php_admin_flag指令的内容,以阻止display_errors被打开.
如果您能够获得输出,请尝试运行此操作以转储所有ini设置的状态:
var_dump(ini_get_all());
但我认为可能发生的事情是你自己的一个文件中有一个小的语法错误,并且解释器完全放弃了该代码.它从未执行过,所以你的display_errors设置甚至都没有运行.
正如其他人所建议的那样,查看错误日志可能会告诉您发生了什么.
另一个hacky但有用的方法是尝试在命令行上执行您的文件,看看它是否提供语法警告.我不熟悉Yii但是找到你最近编辑过的文件并运行它:
php -f yourproject/somefile_ofyours.php
它可能会吐出这样的错误:
PHP Parse error: syntax error, unexpected 'xxxxx' (T_STRING) in somefile_ofyours.php on line 27