【问题标题】:Difference between ini_set("display_errors", "on") and error_reporting(E_ALL)ini_set("display_errors", "on") 和 error_reporting(E_ALL) 的区别
【发布时间】:2018-07-04 15:05:06
【问题描述】:

我尝试使用php.ini 文件启用错误显示,但没有成功。

然后尝试添加error_reporting(E_ALL),没有用,之后我尝试了ini_set("display_errors", "on"),这个选项对我有用。我的问题是这些方法如何工作以及何时使用哪个选项?

【问题讨论】:

  • display_errors 是一个指示是否显示的指令,而error_reporting 是一个说明要真正报告的错误级别。所以你看看display_errors 是否关闭然后error_reporting 不会'没有任何效果。就像说“你想要糖果”吗?如果你说“Yes”,那么只有“Which one?”这个问题才有用处。

标签: php


【解决方案1】:

ini_set()

在运行时为该本地脚本设置php.ini 配置的简单函数。

PHP 的文档说

设置给定配置选项的值。配置选项将在脚本执行期间保留此新值,并将在脚本结束时恢复。

所以基本上如果您的 PHP 配置没有启用 error_reporting,您可以简单地在脚本顶部启用它:

ini_set('display_errors', '1');

但是ini_set()并不是PHP错误的专属,你可以设置任何PHP支持的配置。

ini_set('SMTP', 'smtp.gmail.com');
ini_set('smtp_port', 25);

error_reporting()

根据 PHP 手册

error_reporting — 设置报告哪些 PHP 错误

error_reporting 函数设置错误对最终用户的可见程度。

这些是您获得的一些报告选项及其代表的含义,大多数都非常简单:

  • 0
    • 关闭所有 PHP 错误显示
  • E_ALL
    • 显示所有错误
  • E_ERROR
    • 致命的运行时错误。这些表示无法恢复的错误,例如内存分配问题。脚本的执行被暂停。
  • E_WARNING
    • 运行时警告(非致命错误)。脚本的执行不会停止。
  • E_PARSE
    • 编译时解析错误。解析错误只能由解析器生成。
  • E_NOTICE
    • 运行时通知。指示脚本遇到了可能指示错误的情况,但也可能在正常运行脚本的过程中发生。

我觉得有趣的一点旁注,记住这些关键词是常量,它们包含整数(数字),而不是字符串。例如:

echo E_ALL; // 32767
echo E_ERROR; // 1
echo E_WARNING; // 2
echo E_PARSE; // 4
echo E_NOTICE; // 8

您可以查看所有 PHP 的预定义constants here

【讨论】:

    猜你喜欢
    • 2010-12-13
    • 2010-12-29
    • 2011-08-28
    • 1970-01-01
    • 1970-01-01
    • 2014-08-23
    • 2016-05-25
    • 2012-03-10
    相关资源
    最近更新 更多