通常我使用E_ALL来查看PHP可能会对我的代码所说的任何内容,以尝试改进它。

我刚刚注意到一个错误常量E_STRICT ,但是从未使用或听说过它,这是一个很好的设置用于开发吗? 手册说:

运行时通知。 允许PHP建议对代码进行更改,以确保代码的最佳互操作性和向前兼容性。

所以我想知道我是否使用了与E_ALL最佳的error_reporting级别,或者它与E_STRICT一起是最好的吗? 或者还有其他我尚未学习的组合吗?

===============>>#1 票数:44 已采纳

在PHP 5中, E_STRICT涵盖的E_STRICT不在E_ALL ,因此要获得最多信息,您需要将它们组合在一起:

 error_reporting(E_ALL | E_STRICT);

在PHP 5.4中, E_STRICT将包含在E_ALL ,因此您只能使用E_ALL

你也可以使用

error_reporting(-1);

这将始终启用所有错误。 哪个在语义上更正确:

error_reporting(~0);

===============>>#2 票数:10

在php.ini中使用以下内容:

error_reporting = E_ALL | E_STRICT

此外,你应该安装Xdebug ,它可以突出你的错误明亮的颜色和打印​​有用的详细信息。

永远不要在代码中出现任何错误或通知,即使它是无害的。

===============>>#3 票数:5

在我看来,你在开发阶段设置错误报告级别越高越好。

在实时环境中,您需要稍微(但只是略微)减少的设置,但是您希望它们记录在某个用户无法看到的位置(我更喜欢syslog )。

http://php.net/error_reporting

E_ALL | E_STRICT E_ALL | E_STRICT用于5.2.0之前的PHP开发。

5.2介绍了E_RECOVERABLE_ERROR和5.3引入了E_DEPRECATEDE_USER_DEPRECATED 如果你正在运行其中一个版本,你可能想要打开它们。

如果你想使用魔术数字,你可以将error_reporting值设置为一个相当高的值2^n-1 - 比如16777215 ,这实际上只是打开1..n之间的所有位。 但我不认为使用魔术数字是个好主意......

在我看来,由于E_ALL并非真的全部,PHP已经放弃了一些球。 但显然它将在PHP 6中得到修复......

===============>>#4 票数:2

您可以使用error_reporting = -1
它将始终包含所有位(即使它们不在E_ALL中)

===============>>#5 票数:2

在较新的PHP版本中,E_ALL包含更多类错误。 从PHP 5.3开始,E_ALL包含 E_STRICT 之外的所有内容。 在PHP 6中,它甚至会包括它。 这是一个很好的提示:最好看到更多错误消息而不是更少。

E_ALL中包含的内容记录在在线手册的PHP预定义常量页面中。

就个人而言,如果您使用E_STRICT,我认为这并不重要。 它肯定不会对你造成伤害,特别是因为它可能会阻止你编写在未来PHP版本中很容易被破坏的脚本。 另一方面,在某些情况下,严格的消息可能过于嘈杂,尤其是如果你赶时间的话。 我建议您默认打开它,当它变得烦人时将其关闭。

===============>>#6 票数:1

根据您对此代码的长期支持计划,启用E_STRICT调试可能有助于您的代码在不久的将来继续工作,但对于日常使用来说可能有点过分。 关于E_STRICT有两个重要的事项要记住:

  1. 根据手册 ,大多数E_STRICT错误是在编译时生成的,而不是运行时生成的。 如果您在代码中将错误级别增加到E_ALL (而不是通过php.ini ),那么您可能永远不会看到E_STRICT错误。
  2. E_STRICT包含在PHP 6下的E_ALL ,但不包含在PHP 5中。如果您将服务器升级到PHP6,并按照上面#1中的描述配置E_ALL ,您将开始看到E_STRICT错误,而无需您进行任何其他更改。

===============>>#7 票数:0

严格来说,不是error_reporting,我强烈建议使用任何自动显示解析错误和常见故障的IDE(例如,条件赋值)。

的Zend Studio for Eclipse可以在默认情况下启用此功能,因为我开始使用它,它一直在帮助我很多 ,在发生之前就捕捉错误。

例如,我有这段代码,我在$GLOBALS变量中缓存了一些数据,但我无意中写了$_GLOBALS 数据永远不会被缓存,我永远不知道Zend是否没有告诉我:“嘿,这个$_GLOBALS东西只出现一次,这可能是一个错误”。

===============>>#8 票数:-1

的ini_set( “display_errors设置”, “2”); 的error_reporting(E_ALL);

  ask by SeanDowney translate from so

未解决问题?本站智能推荐:

2回复

php error_reporting E_STRICT

我刚换主机。 一切都已设置并正常工作,除了我收到大量源自PHP Strict Standards的错误之外: 我在php.ini中关闭了E_STRICT 。 当我运行phpinfo()进行验证时,它显示为关闭。 表明 error_reporting = 22519 = 01
1回复

error_reporting E_STRICT导致白屏死亡

我到处查看了一些不同的帖子,但是找不到我的问题的答案。 最近,我意识到我在error_reporting中没有使用E_STRICT,因此我添加了error_reporting(E_ALL | E_STRICT),并且一直在调试发现的错误。 我现在面临的问题是error_reporting
2回复

E_STRICT消息虽然未设置但仍被抛出

自从我的测试服务器更新到PHP 5.3.3(Debian Squeeze)后,我遇到了关于PHP中错误报告的奇怪行为。 我像这样设置error_reporting: 并通过检查设置 这与30719相呼应。 根据php.net,这意味着“所有错误和警告,如支持,除了级别E_
1回复

E_ALL和E_STRICT在PHP中是什么意思?

我在我的项目的配置文件之一中遵循以下代码行: 我不知道这条线到底在做什么? 我通过在搜索框中输入E_STRICT来检查PHP文档,但未找到任何匹配的结果。 因此,能否有人请给我解释上一行的含义以及E_ALL和E_STRICT的用法? 这些实体常量或变量是什么? 谢谢。
1回复

关于error_reporting指令的影响是什么?

根据我的阅读,该指令指定将向脚本输出报告的错误类型(如果显示错误已启用),或者如果log_errors为ON,则将报告给error_logs。 为什么在下面的脚本中我将error_reporting设置为0(关闭error_reporting)并仍然收到描述致命错误的消息? 错误是
1回复

使用error_reporting(E_ALL)显示错误

我正在使用error_reporting(E_ALL)来显示错误,并且工作正常。 目前,我将此功能放在希望显示错误的每个页面和代码上,这意味着我在项目中使用了数百次。 有什么方法可以使我不必一次又一次地重复此功能,但它可以在整个站点上正常工作,例如放置标头或数据库连接。 抱歉,如果我要问一
3回复

error_reporting(E_ALL)和error_reporting(E_ALL&~E_NOTICE)之间有什么区别

任何人都可以解释error_reporting(E_ALL);之间的差异error_reporting(E_ALL); 和error_reporting(E_ALL & ~E_NOTICE); ? 我注意到,当我从E_ALL更改为E_ALL & ~E_NOTICE ,我
4回复

E_ALL的重点是什么? E_STRICT如果它与E_ALL的值相同?

E_ALL等于8191( 0001 1111 1111 1111 ) E_STRICT等于2048( 0000 1000 0000 0000 ) 使用按位OR组合它们: 我们得到的值完全相同的原始E_ALL : 如果我们可以简单地执行error_reporti
3回复

如何覆盖error_reporting?

我已经在php.ini中设置了error_reporting = 0 ,但是当我创建一个包含<?php echo "error: ".error_reporting(); ?>的脚本时<?php echo "error: ".error_reporting(); ?>
8回复

即使使用error_reporting(0),PHP会回显错误的原因是什么?

PHP会强制显示错误的原因是什么,无论你告诉它禁用什么? 我努力了 没有运气。