如何在代码输出中显示 PHP 错误?

Posted

技术标签:

【中文标题】如何在代码输出中显示 PHP 错误?【英文标题】:How to display PHP errors in code output? 【发布时间】:2011-09-29 01:45:34 【问题描述】:

当通过浏览器执行 php 页面时,我们只会得到输出,而不是代码中的错误。

如何查看后台代码出现的错误??

我在代码中使用以下代码进行错误报告..

error_reporting(E_ALL | E_ALL);

【问题讨论】:

相关,涉及正确设置错误报告级别:How do I isolate unwanted PHP error messages?。同样相关的,PHP not displaying errors even though display_errors = On。 【参考方案1】:
ini_set('display_errors', 1);
error_reporting(E_ALL ^ E_NOTICE);

【讨论】:

我没有投反对票,但你为什么有^?那不是异或什么的吗?为什么要异或? @Keoki Zee,显示除通知之外的所有错误(未初始化的变量等)...这是默认设置;) 好吧,这对我来说看起来不错...仍然不知道为什么这被否决了:/【参考方案2】:

试试-1。从文档中,“传入值 -1 将显示所有可能的错误,即使在未来的 PHP 版本中添加了新的级别和常量。”

// Report all PHP errors
error_reporting(-1);

如果这不起作用,请尝试发送ini_set

// Same as error_reporting(E_ALL);
ini_set('error_reporting', E_ALL);

【讨论】:

最好在 php.ini 中进行更改。如果脚本有语法错误,那么更改脚本中的错误报告是没有用的——它会在 error_reporting/ini_set 调用被执行很久之前被杀死。 @webarto:可能想了解 PHP。有一个编译阶段,您编写的原始 PHP 文本被转换为 PHP 操作码。各种 PHP 缓存 (APC) 存储的正是这些操作码。 “转换”是编译阶段。 @webarto:是的,但是您的 php 将在 php.ini 级别打开 error_reporting,因此将显示错误。我的意思是,如果您在生产系统上,其中 error_reporting 在 .ini 级别关闭,则存在语法错误的脚本无法覆盖它以显示编译时错误。 @webarto:没错。如果仪表板被配置为不显示“检查引擎”灯(.ini 文件中的 error_reporting = 0),那么汽车就无法告诉您没有引擎。同样,您完全误读了答案。大多数服务器在 .ini 级别关闭了 error_reporting。存在语法错误的脚本在运行时更改该设置是不可能的,因为永远不会有 BE 运行时。如果 error_reporting 开启,则将报告语法错误,但同样,脚本无法更改报告级别,因为它不会执行。 没关系。再争论也没有意义。如果存在语法错误,PHP 会在编译时终止脚本,这使得脚本无法执行任何操作(包括通过 ini_set 更改设置)。不管你认为你的测试脚本做什么,现实是你什么都证明不了。【参考方案3】:

在您的 php.ini 中,将 display_errors 设置为 On

display_errors = On

然后重新启动您的网络服务器。

【讨论】:

以上是关于如何在代码输出中显示 PHP 错误?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 HHVM 上向浏览器输出/显示致命错误

php接收POST数据并循环输出的代码

如何将 PHP 输出插入 html div 替换临时图形

iis中,php如何显示运行错误

如何在 SQL Developer 中的 PLSQL 错误后抑制脚本显示(禁用命令/代码输出)

如何在 gitlab.com 上的 PHP 项目的作业列表中启用代码覆盖率输出