PHP imap:如果无法连接,只返回,但警告信息仍然显示

时间:2013-10-05 17:53:05

标签: php warnings

我有一个尝试使用imap库抓取一些电子邮件的函数。如果它无法连接,我希望函数只返回而不做任何其他事情。

$imap = imap_open($mailboxPath, $username, $password);
if (!$imap)
  return 0;

这有效,但我仍然收到一条PHP警告消息,指出连接尝试因超时而失败。我可以阻止显示此警告吗?

2 个答案:

答案 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() {});

但在这种情况下,您将丢失脚本中可能出现的任何警告痕迹。