提问人:Alireza 提问时间:1/1/2010 最后编辑:Banee Ishaque KAlireza 更新时间:9/13/2022 访问量:831265
删除 PHP 中的警告消息
Remove warning messages in PHP
答:
您可以使用 error_reporting 来抑制警告,但更好的方法是首先修复您的脚本。
评论
您确实应该修复导致警告的任何问题,但您可以使用 error_reporting()
控制错误的可见性。若要跳过警告消息,可以使用如下所示:
error_reporting(E_ERROR | E_PARSE);
评论
E_ALL ^ E_WARNING
,启用除警告之外的所有错误报告,似乎是更好的参数选择。error_reporting
E_ALL
^ E_WARNING
E_WARNING
您可以在函数调用前面放置一个 @ 以禁止显示所有错误消息。
@yourFunctionHere();
评论
dns_get_record
要禁止显示警告,同时启用所有其他错误报告:
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);
我认为更好的解决方案是配置.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
在 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);
评论
如果要在显示所有其他错误时禁止显示警告和一些其他错误类型(例如,通知),可以执行以下操作:
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();
}
评论