PHP 错误报告和 mail()

标签 php error-handling sendmail error-reporting

我目前有 set_error_handler() 在遇到任何问题时抛出 ErrorException。此外,我在 -1 处有 error_reporting(),因此错误索引数组会引发异常。

无论如何,这是对我的错误/报告环境的粗略概述; PHP mail() 函数在我的 (Win7) 开发机器上抛出错误,在一个项目的过程中,因为我没有安装邮件服务器.我试着在它前面加上 @ 来关闭它,但它仍然会触发错误,因此会抛出异常。我可以用 try{} 包装它,但我很好奇为什么它不会关闭。

为什么它不闭嘴?

重申一下,我们几乎可以从等式中删除 mail()(据我所知);我只是想知道为什么 @ 在这种情况下不会用 mail() 或任何函数来完成它的工作。我只是想 mail() 可能出于某种原因是特例。


感谢我们的 friend XDebug:

( ! ) ErrorException: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\xampp\htdocs\dbc_relaunch_2-0-0\mf\handlers\api\mail\send.php on line 16


好吧,我只是走了:

try{
    mail($args);
catch(Exception $exception){
    return $failure;
}
return $success;

而不是:

if(@mail($args)){
    return $failure;
}
return $success;

一切都很好;我正在浏览@Pheonix 链接的答案,但任何对为什么这可以免费回答有短期订单 react 的人。

最佳答案

你能告诉我们你的错误处理程序吗?请注意,无论您的 error_reporting() 设置如何,即使您在函数前添加了 @,也会在出现错误时调用您的处理程序。

Of particular note is that this value will be 0 if the statement that caused the error was prepended by the @ error-control operator.

来自 set_error_handler() 的手册页.

如果您不想为由 @ 前缀表达式引起的错误抛出异常,则必须检查 error_reporting() 的返回值处理程序。如果它返回零,则您正在处理一个被抑制的错误。

关于PHP 错误报告和 mail(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6536984/

相关文章:

php碳计数日期范围内的天数

javascript - 多语言 PHP 链接

php - 视频上传文件错误

linux - Sendmail 命令将文件作为电子邮件正文和附件发送

amazon-ec2 - EC2 - 全新 PHP 安装 - 邮件无法正常工作

php - 为什么我的 mysql_real_escape_string 不起作用?

PHP从4个数组制作树状结构数组

Javascript:处理 GET 错误 (document.createElement)

java - 我如何解决这个问题 -> 错误 : Could not create the Java Virtual Machine

excel - 如何将excel范围作为图片添加到outlook邮件正文