262

我有一些 PHP 代码。当我运行它时,会出现一条警告消息。

如何删除/抑制/忽略这些警告消息?

4

13 回答 13

409

您确实应该修复导致警告的任何原因,但您可以使用error_reporting(). 要跳过警告消息,您可以使用以下内容:

error_reporting(E_ERROR | E_PARSE);
于 2010-01-01T00:37:29.543 回答
133

您可以在函数调用前放置一个@来抑制所有错误消息。

@yourFunctionHere();
于 2010-01-01T00:41:06.467 回答
52

要在启用所有其他错误报告的同时抑制警告:

error_reporting(E_ALL ^ E_WARNING); 
于 2011-02-11T08:08:19.827 回答
31

如果您不想显示警告和错误,请使用

// Turn off all error reporting
error_reporting(0);

错误报告 - PHP 手册

于 2013-01-22T03:16:23.260 回答
26

如果您想在显示所有其他错误的同时抑制警告和其他一些错误类型(例如,通知),您可以执行以下操作:

error_reporting(E_ALL & ~E_WARNING & ~E_NOTICE);
于 2018-01-10T17:13:50.253 回答
20

在 Core Php 中隐藏警告消息集 error_reporting(0) 在常见包含文件或单个文件的顶部。

在 Wordpress中隐藏警告和注意事项在 wp-config.php 文件中添加以下代码

ini_set('log_errors','On');
ini_set('display_errors','Off');
ini_set('error_reporting', E_ALL );
define('WP_DEBUG', false);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
于 2017-05-12T05:04:20.103 回答
11

没有完全回答这个问题,但我认为在某些情况下这是一个更好的折衷方案:

由于第三方库中的 printf() 语句,我收到了一条警告消息。我确切地知道原因是什么——第三方修复了他们的代码时的临时解决方法。我同意不应禁止显示警告,但我无法向客户展示我的工作,并在屏幕上弹出警告消息。我的解决方案:

printf('<div style="display:none">');
    ...Third-party stuff here...
printf('</div>');

警告仍在页面源中作为提醒我,但对客户不可见。

于 2012-12-30T20:03:26.053 回答
11

我在php.ini中按以下方式执行此操作:

error_reporting = E_ALL & ~E_WARNING  & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED

这仅记录致命错误,没有警告。

于 2018-02-27T08:43:49.147 回答
7

我认为更好的解决方案是配置 .htaccess 这样您就不必更改应用程序代码。以下是 Apache2 的指令

php_flag display_startup_errors off
php_flag display_errors off
php_flag html_errors off
php_value docref_root 0
php_value docref_ext 0
于 2014-05-10T16:34:06.773 回答
5

您可以使用error_reporting来抑制警告,但更好的方法是首先修复您的脚本。

如果您不知道如何操作,请编辑您的问题并向我们展示有问题的行和显示的警告。

于 2010-01-01T00:34:26.960 回答
4

要忽略所有警告,请在代码顶部使用此示例:

error_reporting(0);
于 2020-05-24T18:49:45.750 回答
1

错误控制操作员已经有了答案,但缺乏解释。您可以@对每个表达式使用运算符,它会隐藏错误(致命错误除外)。

@$test['test']; //PHP Notice:  Undefined variable: test

@(14/0); // PHP Warning:  Division by zero

//This is not working. You can't hide Fatal Errors this way.
@customFuntion(); // PHP Fatal error:  Uncaught Error: Call to undefined function customFuntion()

对于调试,它是快速而完美的方法。但是你永远不应该在生产中使用它,也不应该永久包含在你的本地版本中。它会给你带来很多不必要的刺激。

您应该考虑:

1.接受答案中提到的错误报告设置。

error_reporting(E_ERROR | E_PARSE);

或来自 PHP INI 设置

ini_set('display_errors','Off');

2.捕捉异常

try {
    $var->method();
} catch (Error $e) {
    // Handle error
    echo $e->getMessage();
}
于 2020-05-24T03:28:57.667 回答
1

注意:这是为了抑制警告,而不是致命错误

您可以使用 @ 运算符,这将隐藏除致命错误之外的所有警告,但请注意添加 @ 运算符会增加脚本的执行时间

例如@function_name();

另一种方法是使用 .ini 配置文件并编辑 error_reporting 部分,如下编辑它将继续显示所有错误,但会抑制脚本中的任何警告

error_reporting(E_ALL ^ E_WARNING);

但是如果您需要在特定项目而不是整个服务器中抑制警告,那么下面的代码行就足够了

ini_set('error_reporting', E_ALL ^ E_WARNING);

于 2021-08-20T04:42:28.717 回答