Php 开发时建议的错误报告()设置是什么?那你呢?
通常,我使用Php 开发时建议的错误报告()设置是什么?那你呢?,php,error-reporting,Php,Error Reporting,通常,我使用eall查看PHP可能对我的代码所说的任何内容,以尝试改进代码 我刚刚注意到一个错误常量E_STRICT,但从未使用或听说过它,这是用于开发的好设置吗?手册上说: 运行时通知。允许PHP建议对代码进行更改,以确保代码的最佳互操作性和前向兼容性 因此,我想知道我是否在使用最好的错误报告级别与E\u ALL或与E\u STRICT一起使用是最好的?或者我还有其他组合需要学习吗?ini\u集(“显示错误”,“2”); 错误报告(E_全部) 在我看来,在开发阶段设置的错误报告级别越高越好 在
eall
查看PHP可能对我的代码所说的任何内容,以尝试改进代码
我刚刚注意到一个错误常量E_STRICT
,但从未使用或听说过它,这是用于开发的好设置吗?手册上说:
运行时通知。允许PHP建议对代码进行更改,以确保代码的最佳互操作性和前向兼容性
因此,我想知道我是否在使用最好的错误报告
级别与E\u ALL
或与E\u STRICT
一起使用是最好的?或者我还有其他组合需要学习吗?ini\u集(“显示错误”,“2”);
错误报告(E_全部) 在我看来,在开发阶段设置的错误报告级别越高越好 在实时环境中,您需要一个稍微(但只是稍微)减少的集合,但您希望将它们记录在用户看不到的地方(我更喜欢
syslog
)
E|u ALL | E|u STRICT
用于5.2.0之前的PHP开发
5.2引入了E\u可恢复的\u错误
,5.3引入了E\u不推荐的
和E\u用户不推荐的
。如果您正在运行这些版本中的一个,您可能需要打开它们
如果您想使用幻数,您可以将错误报告
值设置为相当高的2^n-1
——比如说,16777215
,这样就可以打开1..n
之间的所有位。但我不认为使用魔法数字是个好主意
在我看来,PHP的
E_ALL
不是真正的全部,这有点失算。但显然,它将在PHP6中得到修复…在PHP5中,E_STRICT
所涵盖的内容不包括在E_ALL
中,因此要获得最多的信息,需要将它们结合起来:
error_reporting(E_ALL | E_STRICT);
在PHP5.4中,E_STRICT
将包含在E_ALL
中,因此您可以只使用E_ALL
你也可以使用
error_reporting(-1);
这将始终启用所有错误。在语义上更正确的是:
error_reporting(~0);
在较新的PHP版本中,E_ALL包含更多的错误类。从PHP5.3开始,E_包含除E_严格之外的所有内容。在PHP6中,它很可能会包括这一点。这是一个很好的提示:最好看到更多的错误消息,而不是更少 E_ALL中包含的内容记录在在线手册的页面中
就我个人而言,我认为如果你严格使用E_并不重要。它当然不会伤害您,特别是因为它可能会阻止您编写脚本,而这些脚本在未来的PHP版本中很可能会被破坏。另一方面,在某些情况下,严格的消息可能太吵了,特别是当你很匆忙的时候。我建议您在默认情况下打开它,当它变得烦人时将其关闭。根据您对此代码的长期支持计划,启用
E_STRICT
进行调试可能有助于您的代码在遥远的将来继续工作,但对于日常使用来说,这可能有些过头了。关于E_STRICT
有两件重要的事情需要记住:
E_STRICT
错误是在编译时生成的,而不是在运行时生成的。如果在代码中(而不是通过php.ini)将错误级别增加到E_ALL
,您可能永远不会看到E_STRICT
错误E_STRICT
包含在PHP 6下的E_ALL
中,但不在PHP 5下。如果您将服务器升级到PHP6,并按照上文第1节所述配置了E#u ALL
,您将开始看到E#u STRICT
错误,而无需对您的部分进行任何其他更改不严格地说是错误报告,我强烈建议使用任何自动显示解析错误和常见故障(例如,条件中的赋值)的IDE Zend Studio for Eclipse在默认情况下启用了此功能,自从我开始使用它以来,它一直在帮助我在错误发生之前捕获错误
例如,我有一段代码,我在
$GLOBALS
变量中缓存了一些数据,但我无意中编写了$\u GLOBALS
。数据从未被缓存,我也不知道Zend是否告诉我:“嘿,这个$\u GLOBALS
东西只出现一次,这可能是一个错误。”在php.ini中使用以下命令:
error_reporting = E_ALL | E_STRICT
此外,你应该安装,它可以突出你的错误,在盲目明亮的颜色和打印有用的详细信息
不要让任何错误或通知出现在代码中,即使它是无害的。您可以使用
错误报告=-1
它将始终由所有位组成(即使它们不在E|all中)好的,PHP的函数名不区分大小写,但您应该按照它应该使用的方式使用它(例如
错误报告(E|all | E| u STRICT)
,其中函数名不是用大写字母书写的)。顺便说一下,E_ALL
在5.4以下的PHP版本中不包含E_STRICT
。E_STRICT从5.4开始包含在E_ALL中。E_STRICT从5.4开始包含在E_ALL中。不是PHP 6请注意,如果PHP>=5.4,E_STRICT包含在ing E中_ALL@hakre,我不确定我是否理解你对这个答案的编辑。你显然是在暗示在“深奥系统”上,-1!=~0
。这些深奥的系统是什么?它们真的存在吗?我猜PHP的整数是以C编译器编译PHP所用的任何格式存储的,您是否在考虑一个假设的场景,在这个场景中,有人编译PHP,比如说,一个补码C编译器?不管怎样,简单地修改Gordon的代码片段不是比留下一个“实际上,最后一段是错误的”编辑更好吗