我有一个尝试使用imap库抓取一些电子邮件的函数。如果它无法连接,我希望函数只返回而不做任何其他事情。
$imap = imap_open($mailboxPath, $username, $password);
if (!$imap)
return 0;
这有效,但我仍然收到一条PHP警告消息,指出连接尝试因超时而失败。我可以阻止显示此警告吗?
答案 0 :(得分:2)
要明确地抑制php中的警告,请使用@
为您调用的函数添加前缀。尽量少尝试这样做。
答案 1 :(得分:1)
您可以使用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() {});
但在这种情况下,您将丢失脚本中可能出现的任何警告痕迹。