ZF2 2.5 并不总是显示完整的错误消息
Posted
技术标签:
【中文标题】ZF2 2.5 并不总是显示完整的错误消息【英文标题】:ZF2 2.5 not always showing full error message 【发布时间】:2017-06-09 09:18:17 【问题描述】:自从我将 Zend-Framework 更新到 2.5.3 版和 php 到 7.0 版后,如果发生异常,我并不总是会收到完整的错误消息。
例如:发生了异常,我获得异常消息的唯一方法是使用调试器(类:ExceptionStrategy,行:121):
在前端,只显示一般错误消息:
我已经打开了 PHP 错误报告(在我的 local.php 和 php.ini 中):
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
奇怪的是,有时我会收到完整的错误消息,包括堆栈跟踪和调试所需的所有内容,但有时我只会收到一般错误消息。
我希望它看起来像这样:
有人经历过这种行为吗?这正常吗?
【问题讨论】:
【参考方案1】:好的,现在我找到了。问题出在我的错误模板中,因为有一个 if 语句检查异常是否是 Exception 的实例:
<?php if(isset($this->exception) && $this->exception instanceof Exception): ?>
自 PHP 7 以来,大多数错误都是以错误异常报告的,所以我不得不像这样扩展 if 语句:
<?php if(isset($this->exception) && ($this->exception instanceof Exception || $this->exception instanceof Error)): ?>
【讨论】:
【参考方案2】:不确定这是否会导致您的问题,但无论如何值得一提。
您必须配置您的视图管理器以显示/呈现异常。您可以阅读更多关于如何在 ZF2 documentation here 中配置视图渲染器的信息。
视图管理器配置中有一个专用键:
'display_exceptions' => true,
【讨论】:
我已经将 display_exceptions 设置为 true。即使异常发生在同一个操作中,它有时也会给我完整的堆栈跟踪,有时不会以上是关于ZF2 2.5 并不总是显示完整的错误消息的主要内容,如果未能解决你的问题,请参考以下文章