通过网络服务器运行时无法发送邮件,但能够从命令行发送相同的PHP脚本

时间:2011-11-15 18:52:05

标签: php apache email https command

我面临一个奇怪的问题:我在项目中有一个名为mail.php的文件。当我从shell运行命令时:

php mail.php

它会在几秒钟内发送邮件,但在运行相同的文件时:

https://www.domain.com/mail.php

使用此代码没有邮件发送:

<?php
      echo "Sending mail now....";
      mail("mr.atanu.dey.83@gmail.com", "PHP Test mail", "Hope this works! ");
?>

有人能帮助我吗?

2 个答案:

答案 0 :(得分:1)

可能是SELinux已启用,并且根据SELinux默认配置,不允许通过apache / web服务器发送邮件。

要检查SELinux是否已启用且已配置为停止发送电子邮件,请运行以下命令:

getsebool -a | grep mail

示例输出

allow_postfix_local_write_mail_spool --> on
httpd_can_sendmail --> off
logging_syslogd_can_sendmail --> off

现在,为了配置SELinux以允许apache发送电子邮件,请运行以下命令:

setsebool -P httpd_can_sendmail on

检查此答案,它解决了我的问题: Not able to send mail when running through webserver but able to send from command line with same php script

答案 1 :(得分:0)

可能的解决方案:

在php.ini中替换

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

sendmail_path = /usr/sbin/sendmail.postfix -t -i

然后重启Apache。