error_reporting(0) 隐藏常规输出?奇怪的行为

Posted

技术标签:

【中文标题】error_reporting(0) 隐藏常规输出?奇怪的行为【英文标题】:error_reporting(0) hides regular output? Strange behavior 【发布时间】:2014-05-05 06:33:51 【问题描述】:

一位客户正在运行一个 Magento 网店,但 error_reporting 函数与 magento 结合使用时出现了一个非常奇怪的行为。

据我所知,它隐藏了显示错误/警告/通知消息,并且不影响脚本的常规输出(例如,使用“echo”)。

我有一个简短的示例脚本,其中包含两个echo-调用。在依赖关系中,如果 error_reporting() 开启或关闭,则在浏览器中可以看到一两行输出。我已经预料到了,这个函数不会影响常规输出?

脚本中有两个echo-calls:在第 9 行和第 31 行。 使用error_handling(0),只有第一个echo-call 发送输出,第二个回显的输出将被忽略。

在我看来,这并不是error_reporting() 函数的异常行为。我试图改变 CHMOD (644,666,755,777),但没有改变。 display_errors 也不会改变输出。

这里有两张截图(看浏览器地址行和脚本第6行或第7行的GET-Parameter:

【问题讨论】:

请将代码作为代码而不是图像。 检查您的错误日志。 当您将E_ALL0 切换,以及将0E_ALL 切换时会发生什么情况...是相反的吗? @Arian:这取决于是否使用 GET 参数。使用 GET 参数它需要 E_ALL,没有 GET 参数它需要 0。这就是谷歌浏览器有两张截图的原因。或者你的问题没有得到正确的答案?但是,是的,它是相反的。刚试过:-) 【参考方案1】:

做:

error_reporting(-1);

看看这是否会引发您遗漏的任何错误。

更新 1:

grep 或在文件夹中找到代码库中的所有 error_reporting 和 display_errors 并将它们删除。让您的代码成为唯一进行错误设置的地方。可能是 Magneto 正在做的事情改变了这一点。

【讨论】:

error_reporting(-1) 的行为与 error_reporting(E_ALL) 相同,这意味着:输出的两行 ...

以上是关于error_reporting(0) 隐藏常规输出?奇怪的行为的主要内容,如果未能解决你的问题,请参考以下文章

[PHP] error_reporting可以屏蔽Fatal error错误

即使 display_errors 为 Off 且 error_reporting 为 0 也会显示 PHP 通知

php error_reporting()关闭报错

如何在界面上隐藏 mySQL 错误? [关闭]

error_reporting()

PHP error_reporting() 函数