PHP mail()在升级到OSX Mountain Lion后不再起作用。

33

我昨天刚更新了OS X到Mountain Lion,但PHP函数mail()不再工作。

在更新之前,PHP的mail()函数工作正常,Apple Mail也可以正常使用。 更新后,Apple Mail还是可以正常使用,但PHP的mail()函数无法正常工作。

Web服务器:XAMPP 1.7.3

我使用以下代码测试mail()函数:

if (mail($to, $object, $content, "From: ". $from)) 
{ 
    echo 'send '; 
} 
else 
{ 
    echo "not send"; 
}

它显示:未发送

我需要改变什么吗?比如php.ini或其他什么东西吗?

提前感谢。


1
请检查 php.ini 中的 sendmail_path,确保您的系统上已安装 sendmail 并且路径与 PHP 匹配。然后,请检查您的 syslog 或日志目录以查看邮件服务器是否有任何错误。 - drew010
2个回答

79

最终我找到了解决方案。 在查看了错误日志 (/Applications/XAMPP/xamppfiles/logs/error_log) 后,我发现了一个错误: sendmail: fatal: chdir /Library/Server/Mail/Data/spool: No such file or directory

请在您的终端执行以下操作:

sudo mkdir -p /Library/Server/Mail/Data/spool
sudo /usr/sbin/postfix set-permissions
sudo /usr/sbin/postfix start

然后php的mail()工作了!

参考链接: https://apple.stackexchange.com/questions/54051/sendmail-error-on-os-x-mountain-lion


7
终端命令在处理邮件后缀时出现了一些错误,但你的解决方案有效! - ariestav
修复对我有用,尽管我在终端上收到了一些奇怪的警告。最终,它还是起作用了! - Jeremy Ricketts
以下是如何在启动时加载sendmail的说明:http://remonpel.nl/2013/03/sending-mail-from-php-with-mountain-lion/ - gherkins
这个线程中的备选答案也可以(将配置指向实际存在的postfix位置)。/Library/Server/Mail/Data/spool文件夹是OS X Server处理事务的方式。postfix默认路径为/var/spool/postfix,并且已经存在于我的机器上。 - Vagari

3
在按照上述方法创建了spool文件夹后,我按照这篇文章OS X Hints的指导配置了postfix。
我还需要编辑我的php.ini中的sendmail路径以添加一些额外的开关,具体来说是:
sendmail_path=/usr/sbin/sendmail -t -i

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接