不能在nginx上使用mail(),但可以使用msmtp在控制台上发送邮件

我安装msmtp在我的centos 6,我知道它的工作正常,因为我可以使用bash命令发送电子邮件:

echo -e "Subject: Test Mail\r\n\r\nThis is a test mail" |msmtp --debug --from=default -t username@gmail.com

那么,我正在继续让nginx也允许使用msmtp ,在我的php.ini这是我的sendmailpath:

sendmail_path = "/usr/bin/msmtp -C /etc/msmtprc --logfile /var/log/msmtp.log -a gmail -t"

那么,我试着用这个发送:

 <?php if(mail("[email protected]","A Subject Here","Hi there,\nThis email was sent using PHP's mail function.")) print "Email successfully sent"; else print "An error occured"; ?> 

但是,它一直失败,我开始认为这是因为permission因为没有写在日志中,这里是我有权限

对于msmtprc @ / etc /

 [root@xxxx ~]# cd /etc/ [root@xxxx etc]# ls -l -rw------- 1 nginx nginx 248 Apr 2 14:55 msmtprc 

为/ var / log

 -rw-r--r-- 1 nginx nginx 788 Apr 2 14:56 msmtp.log 

它是权限问题吗? 或其他人。 我应该给chown nginx? 还是其他的?

希望有人能帮助,我已经做了几个小时的试验和错误,这是令人沮丧的。 谢谢!

自CentOS 6.6以来,应用于Apache的SELinux策略现在也以相同的方式应用于nginx和php-fpm。 因此,您需要使用正确的SELinux布尔值来允许Web服务器发送邮件。

 setsebool -P httpd_can_sendmail 1