我正在使用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结果。请问如何沉默?
答案 0 :(得分:20)
我添加了
$this->marubox=@imap_open($this->server,$this->username,$this->password);
imap_errors();
imap_alerts();
和imap_errors();
以及imap_alerts();
可以发挥魔力:)
答案 1 :(得分:0)
有两种可能性浮现在脑海中:
您可以在php.ini,ini_set或.htaccess或类似设置中设置error_reporting,以便抑制NOTICE,但由于您不想处理错误的应用程序,这可能不是,您需要什么
实施您自己的错误处理。这并不难做到。你定义了一个错误强制函数,然后告诉PHP使用它而不是它自己的默认处理程序。
//定义
function myHandler($ errno,$ errstr){}
//在处理脚本开头的某个地方
的set_error_han dler( “将myHandler”);
有关详情,请参阅set_error_handler。另请注意,从您注册处理程序的那一刻起,您就要全权负责。您可以抑制或抛出您需要/想要的任何错误。