8

我正在使用 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 有了它我得到:Notice Unknown: Authentication failed (Authentication failed) (errflg=1)

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

当 imap_open 无法连接并且它弄乱了我的 JSON 结果时,我总是收到 NOTICE 错误。请问怎么消音?

4

2 回答 2

25

我添加了

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

imap_errors();施展imap_alerts();魔法:)

于 2011-03-24T17:48:58.740 回答
0

想到了两种可能:

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

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

    //定义

    函数 myHandler($errno, $errstr) {}

    //处理脚本开始的地方

    set_error_handler("myHandler");

有关更多信息,请参见set_error_handler。另请注意,从您注册处理程序的那一刻起,您全权负责。您可以抑制或抛出您需要/想要的任何错误。

于 2011-03-24T16:36:04.753 回答