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 并不总是显示完整的错误消息的主要内容,如果未能解决你的问题,请参考以下文章

验证 php 表单 - 如何在表单上显示错误消息

如何使 php artisan tinker 显示完整的错误(消息)?

如何设置 web.config 文件以显示完整的错误消息

ZendSkeletonAplicaton 给我错误

AWS - 自定义拒绝消息

在win7上的不同目录中的wamp 2.5中创建vhost返回禁止错误