Answers:
您确实应该修复引起警告的所有内容,但是可以使用来控制错误的可见性error_reporting()
。要跳过警告消息,您可以使用以下方法:
error_reporting(E_ERROR | E_PARSE);
E_ALL ^ E_WARNING
,启用除警告之外的所有错误报告功能,似乎是的更好选择error_reporting
。
您可以在函数调用前放置一个@,以禁止显示所有错误消息。
@yourFunctionHere();
dns_get_record
会抛出警告。您的代码可以补偿警告,但仍会引发警告。关闭错误报告可在生产服务器上运行,但不能在开发服务器上运行。如果生成的是XML内容,则警告将导致浏览器无法呈现,因为服务器正在发送由警告引起的格式错误的XML。有时,您希望在开发过程中做到这一点,而不是因为已经补偿的由临时DNS查找失败引起的问题。
在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);
不能完全回答问题,但是我认为在某些情况下这是一个更好的折衷方案:
由于第三方库中的printf()语句,我收到了一条警告消息。我确切地知道了原因是什么-第三方修复其代码时的临时解决方法。我同意不应该禁止警告,但是我不能在屏幕上弹出警告消息的情况下向客户演示我的工作。我的解决方案:
printf('<div style="display:none">');
...Third-party stuff here...
printf('</div>');
警告仍在页面源中,以提醒我,但对客户端不可见。
ob_start()
和ob_end_clean()
代替。这样,这些东西甚至都不会发送到浏览器(它在这里完成)。
我认为更好的解决方案是.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
您可以使用error_reporting禁止显示警告,但是更好的方法是首先修复脚本。
如果您不知道该怎么做,请编辑您的问题,然后向我们显示有问题的行以及显示的警告。
错误控制运算符已经有答案,但是缺少解释。您可以@
对每个表达式使用运算符,并且它会隐藏错误(致命错误除外)。
@$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();
}