0

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

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

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

4

2 回答 2

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

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

于 2013-10-05T18:00:44.327 回答
1

要明确禁止 php 中的警告,请在您调用的函数前加上@. 不过,尽量少做这件事。

于 2013-10-05T18:00:51.723 回答