【发布时间】:2015-08-01 00:48:56
【问题描述】:
我在 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(它擦除了我所有的配置文件并破坏了 DBs grrr),但结果相同。有什么想法吗?
【问题讨论】:
-
你怎么知道它们都使用相同的 PHP.ini?你检查
phpinfo()了吗? -
OSX 与 PHP 捆绑在一起。确保您实际上运行的是相同的版本。
-
在终端中运行 php 脚本与在 httpd 中运行 php 不同——我也不确定 XAMPP 如何在 OS X 上打开套接字。
-
@Brad Yep 从这两种方法中做了一个 phpinfo,它们指向:/Applications/XAMPP/xamppfiles/etc/php.ini
-
@Tivie 我确保对路径进行了排序,以便 php 指向 XAMPP。
标签: php macos apache email xampp