无法在PHP中沉默imap_open错误通知

时间:2011-03-24 16:29:28

标签: php imap-open

我正在使用PHP 5.3.5并且我正在使用

$this->marubox=@imap_open($this->server,$this->username,$this->password);

@符号应该使错误报告无声,但它没有,我确信错误发生在这一行。我希望我的应用程序能够识别问题本身并做出反应并且不会出现NOTICE错误,因为我的公司开发策略,我无法关闭整个PHP的错误报告。

没有@我得到:

  

imap_open()[function.imap-open]:无法打开流{pop3.seznam.cz:110/pop3 }INBOX   有了它我得到:注意未知:身份验证失败(身份验证失败)(errflg = 1)

如果登录信息正常,则会打开连接并且不会发生错误。

当imap_open没有设法连接时,我总是收到NOTICE错误,而且它正在弄乱我的JSON结果。请问如何沉默?

2 个答案:

答案 0 :(得分:20)

我添加了

$this->marubox=@imap_open($this->server,$this->username,$this->password);
imap_errors();
imap_alerts();

imap_errors();以及imap_alerts();可以发挥魔力:)

答案 1 :(得分:0)

有两种可能性浮现在脑海中:

  1. 您可以在php.ini,ini_set或.htaccess或类似设置中设置error_reporting,以便抑制NOTICE,但由于您不想处理错误的应用程序,这可能不是,您需要什么

  2. 实施您自己的错误处理。这并不难做到。你定义了一个错误强制函数,然后告诉PHP使用它而不是它自己的默认处理程序。

    //定义

    function myHandler($ errno,$ errstr){}

    //在处理脚本开头的某个地方

    的set_error_han dler( “将myHandler”);

  3. 有关详情,请参阅set_error_handler。另请注意,从您注册处理程序的那一刻起,您就要全权负责。您可以抑制或抛出您需要/想要的任何错误。