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


PHP imap: if can't connect, just return, but warning message still displaying

我有一个函数,试图使用imap库抓取一些电子邮件。如果它无法连接,我希望该功能在不执行任何其他操作的情况下返回。

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

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

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

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