我有一个尝试使用 imap 库抓取一些电子邮件的功能。如果它无法连接,我希望函数只返回而不做任何其他事情。
$imap = imap_open($mailboxPath, $username, $password);
if (!$imap)
return 0;
这可行,但我仍然收到一条 PHP 警告消息,表明连接尝试因超时而失败。我可以阻止显示此警告吗?
您可以使用set_error_handler()函数定义自己的函数来负责处理不同类型的 PHP 错误。如果您想更改处理警告的方式,您的代码可能如下所示:
set_error_handler("warning_handler", E_WARNING);
$imap = imap_open($mailboxPath, $username, $password);
if (!$imap)
return 0;
function warning_handler($errno, $errstr) {
// don't display the message, maybe write it to log file
}
如果你只想隐藏警告,你可以将一个空的匿名函数传递给 set_error_handler():
set_error_handler("warning_handler", function() {});
但在这种情况下,您将丢失脚本中可能出现的任何警告痕迹。
要明确禁止 php 中的警告,请在您调用的函数前加上@
. 不过,尽量少做这件事。