PHP 5禁用严格的标准错误

Man*_*era 173 php strict

我需要在顶部设置我的PHP脚本以禁用严格标准的错误报告.

有人可以帮忙吗?

Nat*_*ate 183

您要禁用错误报告,还是仅阻止用户查看错误报告?记录错误通常是一个好主意,即使在生产站点上也是如此.

# in your PHP code:
ini_set('display_errors', '0');     # don't show any errors...
error_reporting(E_ALL | E_STRICT);  # ...but do log them
Run Code Online (Sandbox Code Playgroud)

它们将记录到您的标准系统日志中,或使用该error_log指令准确指定您希望错误发生的位置.

  • 只是明确说明显而易见的:当然你也可以在你的`php.ini`文件中设置它们,例如,如果你不能修改PHP代码. (11认同)
  • 这对我不起作用 - 必须使用E_ALL&~E_STRICT来自假代码猴Rashid评论来自下面的答案 (4认同)

Tyl*_*ter 90

没有错误.

error_reporting(0);

或者只是不严格

error_reporting(E_ALL ^ E_STRICT);

如果您想再次显示所有错误,请使用

error_reporting(-1);

  • +1:我相信`^`只适用于省略一种错误.如果要关闭其他类型,则应使用`E_ALL&~E_DEPRECATED&~E_STRICT`格式.或者也许是`(E_ALL&〜(E_DEPRECATED | E_STRICT))`格式. (55认同)
  • 注意:自PHP 5.4以来,E_STRICT只是E_ALL的一部分 (10认同)

Sta*_*arx 31

以上解决方案都是正确的.但是,当我们谈论一个普通的PHP应用程序时,它们必须包含在每个页面中,它需要它.解决这个问题的方法是通过.htaccessroot文件夹.只是为了隐藏错误.[在文件中放入以下一行]

php_flag display_errors off
Run Code Online (Sandbox Code Playgroud)

要么

php_value display_errors 0
Run Code Online (Sandbox Code Playgroud)

接下来,设置错误报告

php_value error_reporting 30719
Run Code Online (Sandbox Code Playgroud)

如果你想知道这个值30719是怎么来的,E_ALL(32767),E_STRICT(2048)实际上是常量,它保​​存数值和(32767 - 2048 = 30719)

  • 非常感谢 - 这完成了PHP 5.4.7中的技巧(.htaccess解决方案) - 没有别的 - 甚至修改.ini - 正在做的伎俩. (2认同)
  • 嗨,只是为了使它轻松,对于那些使用wamp,你可以通过单击PHP> php设置>>显示错误来禁用错误.如果已选中,则取消选中它. (2认同)

小智 9

如果未在php.ini中设置,则error_reporting标志的默认值为E_ALL&~E_NOTICE.但在某些安装中(特别是针对开发环境的安装)有E_ALL | E_STRICT设置为此标志的值(这是开发期间建议值).在某些情况下,特别是当您想要运行一些开源项目时,这些项目是在PHP 5.3时代之前开发的,并且尚未使用PHP 5.3定义的最佳实践进行更新,在您的开发环境中,您可能会遇到一些问题.像你这样的消息.解决这种情况的最好方法是在php.ini代码中将E_ALL设置为error_reporting标志的值(可能在web-root中的前端控制器如index.php中,如下所示:

if(defined('E_STRICT')){
    error_reporting(E_ALL);
}
Run Code Online (Sandbox Code Playgroud)


MSS*_*MSS 8

在php.ini中设置:

error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT
Run Code Online (Sandbox Code Playgroud)