删除PHP中的警告消息

时间:2010-01-01 00:32:51

标签: php warnings error-reporting

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

如何删除/禁止/忽略这些警告消息?

12 个答案:

答案 0 :(得分:299)

您确实应该修复导致警告的任何内容,但您可以使用error_reporting控制错误的可见性。要跳过警告消息,您可以使用以下内容:

error_reporting(E_ERROR | E_PARSE);

答案 1 :(得分:103)

您可以在函数调用前放置@以禁止显示所有错误消息。

@yourFunctionHere();

答案 2 :(得分:35)

在启用所有其他错误报告的同时禁止显示警告:

error_reporting(E_ALL ^ E_WARNING); 

答案 3 :(得分:27)

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

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

Error Reporting - PHP Manual

答案 4 :(得分:12)

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

error_reporting(E_ALL & ~E_WARNING & ~E_NOTICE);

答案 5 :(得分:10)

不完全回答这个问题,但我认为在某些情况下这是一个更好的妥协:

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

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

警告仍然在页面源中作为提醒给我,但对客户来说是不可见的。

答案 6 :(得分:10)

在Core Php中

隐藏警告消息集error_reporting(0)在公共包含文件或单个文件的顶部。

在Wordpress hide Warnings and Notices中,在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);

答案 7 :(得分:7)

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

如果您不知道如何操作,请编辑您的问题并向我们显示相关行以及显示的警告。

答案 8 :(得分:5)

我认为更好的解决方案是配置.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

答案 9 :(得分:0)

PHP 7.2提供了试用示例。这是从449行开始的php.ini文件中给出的片段。

; Common Values:
;   E_ALL (Show all errors, warnings and notices including coding standards.)
;   E_ALL & ~E_NOTICE  (Show all errors, except for notices)
;   E_ALL & ~E_NOTICE & ~E_STRICT  (Show all errors, except for notices and coding standards warnings.)
;   E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR  (Show only errors)
; Default Value: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
; Development Value: E_ALL
; Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT
; http://php.net/error-reporting
error_reporting = E_ALL

因此,请阅读并尝试使用它们提供的不同示例。修改后,重新启动服务器并测试方案。

答案 10 :(得分:0)

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

@$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();
}

答案 11 :(得分:0)

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

error_reporting(0);