方案一,输出到系统错误
One possibility is to set your own error handler before the call and restore the previous error handler later with restore_error_handler().
1 | set_error_handler(function() { /* ignore errors */ }); |
You could build on this idea and write a re-usable error handler that logs the errors for you.
1 | set_error_handler([$logger, 'onSilencedError']); |
You can use set_error_handler()
and the ErrorException
class to turn all php errors into exceptions.
1 | set_error_handler(function($errno, $errstr, $errfile, $errline, array $errcontext) { |
The important thing to note when using your own error handler is that it will bypass the error_reporting
setting and pass all errors (notices, warnings, etc.) to your error handler. You can set a second argument on set_error_handler()
to define which error types you want to receive, or access the current setting using … = error_reporting()
inside the error handler.
Suppressing the warning
Another possibility is to suppress the call with the @ operator and check the return value of dns_get_record() afterwards. But I’d advise against this as errors/warnings are triggered to be handled, not to be suppressed.
方案二: 输出到自定义函数
1 | set_error_handler(function ($errno, $errstr) { |