ini_set(“ display_errors”,“ on”)和error_reporting(E_ALL)之间的区别

时间:2018-07-04 15:05:07

标签: php

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

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

1 个答案:

答案 0 :(得分:3)

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