删除PHP中的警告消息

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

如何删除/屏蔽/忽略这些警告消息?

754912 次浏览

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

你真的应该修复引起警告的任何东西,但你可以用error_reporting()控制错误的可见性。要跳过警告信息,你可以使用如下命令:

error_reporting(E_ERROR | E_PARSE);

你可以在函数调用前加上@来抑制所有错误消息。

@yourFunctionHere();

禁用警告,同时启用所有其他错误报告:

error_reporting(E_ALL ^ E_WARNING);

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

由于第三方库中的printf()语句,我收到了警告消息。我很清楚原因是什么——在第三方修复他们的代码时临时的解决办法。我同意警告不应该被抑制,但是我不能在屏幕上弹出警告消息的情况下向客户演示我的工作。我的解决方案:

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

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

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

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

Error Reporting - PHP Manual . PHP Error Reporting

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

在核心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);

如果你想在显示所有其他错误的同时抑制警告和其他错误类型(例如,通知),你可以这样做:

error_reporting(E_ALL & ~E_WARNING & ~E_NOTICE);

我在php . ini中这样做:

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

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

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

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