PHP 5禁用严格的标准错误

我需要在顶部设置我的PHP脚本来禁止严格标准的错误报告。

任何人都可以帮忙吗?

你想禁用错误报告,或只是防止用户看到它? logging错误通常是一个好主意,即使在生产站点上也是如此。

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

它们将被logging到您的标准系统日志中,或者使用error_log指令精确指定您想要发生错误的位置。

没有错误。

error_reporting(0);

或者只是不严格

error_reporting(E_ALL ^ E_STRICT);

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

error_reporting(-1);

以上所有解决scheme都是正确 但是,当我们谈论一个正常的PHP应用程序时,他们必须包含在每个页面中。 解决这个问题的一个方法是通过根文件夹下的.htaccess 。 只是为了隐藏错误。 [把其中一个followling行放在文件中]

 php_flag display_errors off 

要么

 php_value display_errors 0 

接下来,设置错误报告

 php_value error_reporting 30719 

如果你想知道值30719是如何产生的,E_ALL(32767),E_STRICT(2048)实际上是保持数值的常数,( 32767 - 2048 = 30719

如果没有在php.ini中设置, error_reporting标志的缺省值是E_ALL&〜E_NOTICE 。 但是在某些安装(特别是针对开发环境的安装)中有E_ALL | E_STRICT设置为该标志的值(这是开发期间推荐值 )。 在某些情况下,特别是当你想运行一些开源项目,这些项目是在PHP 5.3时代之前开发的,而且还没有用PHP 5.3定义的最佳实践进行更新时,在开发环境中,你可能会遇到一些像你的消息越来越。 要解决这种情况,最好的方法是只在php.ini代码中 (可能位于web-root的index.php等前端控制器中)将error_porting标志的值设置为E_ALL ,如下所示:

 if(defined('E_STRICT')){ error_reporting(E_ALL); } 

在php.ini中设置:

 error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT 

WordPress的

如果你在wordpress环境下工作,Wordpress会在函数wp_debug_mode()中的文件wp-includes / load.php中设置错误级别。 所以你必须改变这个函数被调用后的级别(在文件没有检入到git中,所以这只是开发),或者直接修改error_reporting()调用

我没有看到一个干净的,适合于生产就绪软件的答案,所以这里是:

 /* * Get current error_reporting value, * so that we don't lose preferences set in php.ini and .htaccess * and accidently reenable message types disabled in those. * * If you want to disable eg E_STRICT on a global level, * use php.ini (or .htaccess for folder-level) */ $old_error_reporting = error_reporting(); /* * Disable E_STRICT on top of current error_reporting. * * Note: do NOT use ^ for disabling error message types, * as ^ will re-ENABLE the message type if it happens to be disabled already! */ error_reporting($old_error_reporting & ~E_STRICT); // code that should not emit E_STRICT messages goes here /* * Optional, depending on if/what code comes after. * Restore old settings. */ error_reporting($old_error_reporting);