175

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

有人可以帮忙吗?

4

7 回答 7

187

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

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

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

于 2009-08-08T14:20:07.023 回答
89

因为没有错误。

error_reporting(0);

或者只是不严格

error_reporting(E_ALL ^ E_STRICT);

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

error_reporting(-1);

于 2009-08-08T14:08:04.420 回答
31

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

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)的常量

于 2012-07-11T09:46:34.433 回答
9

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

if(defined('E_STRICT')){
    error_reporting(E_ALL);
}
于 2011-08-12T19:30:10.107 回答
8

在 php.ini 中设置:

error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT
于 2015-03-03T09:22:35.760 回答
4

WordPress

如果您在 wordpress 环境中工作,Wordpress 会在函数的 wp-includes/load.php 文件中设置错误级别wp_debug_mode()。因此,您必须在调用此函数后更改级别(在未检入 git 的文件中,因此仅用于开发),或者直接修改error_reporting()调用

于 2015-06-29T15:20:31.480 回答
2

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

/*
 * 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 e.g. 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);
于 2017-06-29T21:51:37.723 回答