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

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

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

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

error_reporting(E_ALL | E_ALL);

【问题讨论】:

标签: php


【解决方案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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-19
    • 2015-08-07
    • 1970-01-01
    相关资源
    最近更新 更多