@错误抑制运算符和set_error_handler [英] @ error suppression operator and set_error_handler
问题描述
我遵循良好的编程习惯,并且将PHP错误记录到文件中,而不是向用户显示.我为此使用set_error_handler()
.
I am following good programming practices and I am logging the PHP errors to file instead of displaying it to user. I use set_error_handler()
for that.
现在是问题所在.例如,我在某处:
Now the problem. For example, I have somewhere:
@file_exists('/some/file/that/is/outside/openbasedir.txt');
但是,尽管有错误抑制运算符,但仍会记录错误消息.我不要我希望抑制的错误不会传递给我的错误处理程序.
But despite the error suppression operator, the error message logs. I don't want that. I want suppressed errors not to pass to my error handler.
推荐答案
@
运算符将error_reporting临时设置为0,因此您可以在错误处理程序中测试error_reporting的值:
The @
operator temporarily sets error_reporting to 0, so you can test the value of error_reporting in your error handler:
if (ini_get('error_reporting') == 0) {
return;
}
甚至更好的是,仅记录error_reporting中的错误类型:
Or even better, log only error types that are in error_reporting:
$error_reporting = ini_get('error_reporting');
if ( !($error_reporting & $errno) ) {
return;
}
还要查看 log_errors
和 error_log
选项,用于将错误自动记录到文件或syslog.
Also take a look at the log_errors
and error_log
options, for automatically logging errors to a file or to syslog.
这篇关于@错误抑制运算符和set_error_handler的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!