Yii2 错误处理程序在非对象调用时死得很丑

Yii2 error handler dies ugly on non-object calls

任何人都知道是什么导致 Yii2 错误处理程序在以下行正确停止:

echo $missing;

(假设 $missing 为空)并正确显示“未定义变量:缺少...”通知。同时 "die" 完全在以下行中:

echo $missing->noneExisting();

并显示 (return) 个完全空白的页面而不是正确的错误消息?

自从我开始在 Yii2 中编码以来,我在 Yii2 错误处理程序方面遇到了一个非常奇怪的麻烦。上面的代码是示例之一。另一个是,在迁移 causes command-line console to die ugly, instead of displaying proper fatal error.

中重新声明 Yii 命名空间

I've been told,这个问题是我的PHP配置引起的。但我觉得难以置信——主要是因为:

我同意,这一定是我本地安装的 PHP 的东西,因为我已经在新安装的 XAMPP 5.6.8 及其便携版本中测试了所有这些示例.但是,由于我只能在 Yii2 驱动的项目中重现这个问题,并且在 Yii1 驱动的应用程序或纯 PHP 下一切都很好,所以里面一定有某种讨厌的恶魔。

有人可以在这里提供帮助或至少阐明一些问题,我应该从哪里开始寻找?

我发现在某些环境下,当 Yii2 处理缺失变量错误时,它会在调试器底部显示错误。

Warning: var_export does not handle circular references in ~/vendor/yiisoft/yii2/helpers/BaseVarDumper.php on line 187

也许那个错误导致你的环境死于此。 然而这似乎是一个错误。

此外,我找到了一个使用此 Github Issue 中找到的解决方案的解决方法。 它不是很漂亮,但是是一个解决方案。

编辑:已发布针对此问题的补丁。 See here