gpt4 book ai didi

PHP 错误报告和 mail()

转载 作者:可可西里 更新时间:2023-11-01 00:16:44 26 4
gpt4 key购买 nike

我目前有 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com