我在 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/