php - 使用 PHP 的 mail() 可以从命令行运行,而不是从 Apache 运行,知道为什么吗?

标签 php macos apache email xampp

我在 OS X (Yosemite) 上使用 XAMPP,使用 PHP 的标准 mail() 函数通过 Sendmail(OS X 的 Postfix 别名)发送邮件。我可以通过其他方式发送电子邮件,例如在 Postfix 配置文件中指定 SMTP 服务器或使用 PHP 类,但希望首先让基本的 mail() 函数正常工作 - 有很多依赖于它。

命令行和 Apache 的 PHP 都以同一用户身份运行(通过 exec() 函数使用 whoami 进行测试,以及创建文件和查看权限) 。它们都使用相同的 php.ini 文件。

当我从终端运行 PHP 脚本时,它会暂停一会儿,我看到它正在邮件日志文件中处理,我在目的地收到电子邮件和 mail() 函数返回true

当我通过 Apache 运行脚本时,它暂停了一会儿,邮件日志没有命中,没有电子邮件到达,函数返回 false 并且任何地方都没有错误......无论我如何更改报告级别或查看各种日志文件。它似乎只是悄然失败。

是否有什么东西阻止 Apache 在后台与邮件服务器交互?就像 OS X 中的东西一样?或者也许是 PHP 中的一个错误?还是 XAMPP 独有的东西?我尝试升级到最新版本的 XAMPP(它删除了我的所有配置文件并破坏了 DB grrr),但得到了相同的结果。有什么想法吗?

最佳答案

好吧,我找到了解决方案,无论出于何种原因,php.ini 中的 sendmail 路径必须如下所示,PHP 的邮件才能在 OS X Yosemite 上通过 Apache 工作:

sendmail_path = "env -i /usr/sbin/sendmail -t -i"

感谢所有试图寻找答案的人。

关于php - 使用 PHP 的 mail() 可以从命令行运行,而不是从 Apache 运行,知道为什么吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30338378/

相关文章:

c# - 在 Apache/mod_mono 上使用 MySQL 部署 ASP.NET MVC Internet 应用程序

php - 找不到 CodeIgniter 4 类,命名空间有问题

javascript - 将 PHP 传递到 jQuery

c - 如何修复 if 语句错误和 "Result of comparison against a string literal is unspecified"?

ios - 在 Mac 和 iOS 应用程序之间共享应用程序购买

上传大于 2 MB 的文件时 Apache 文件上传异常

php - PayPal Parellel 付款和退款

php - 使路径在 Linux 和 Windows 上都有效

objective-c - NSTextView圆角并绘制背景

php - 错误 522 - 服务器重载?如何排除故障?