在Web服务器上运行时无法发送邮件,但可以使用相同的php脚本从命令行发送邮件

在Web服务器上运行时无法发送邮件,但可以使用相同的php脚本从命令行发送邮件,php,apache,email,https,command,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 wo

我面临一个奇怪的问题:我在项目中有一个名为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! ");
?>

有人能帮我吗?

可能的解决方案:

在php.ini中替换

sendmail\u路径=/usr/sbin/sendmail-t-i

sendmail\u路径=/usr/sbin/sendmail.postfix-t-i


然后重新启动Apache。

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

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

getsebool -a | grep mail
setsebool -P httpd_can_sendmail on
样本输出 现在,为了将SELinux配置为允许apache发送电子邮件,请运行以下命令:

getsebool -a | grep mail
setsebool -P httpd_can_sendmail on
检查此答案,它可以解决我的问题:

这可能与许多事情有关,您查看日志了吗?对于cli、cgi、apache、fpm,php.ini文件可能不同,因此可能是配置或用户权限检查日志,当通过web服务器运行时,错误日志报告是:程序模式需要特殊权限,例如root或TrustedUser。有什么想法吗?可能是重复的你解决这个问题了吗?我在CentOS的错误日志“程序模式需要特殊权限,例如root或TrustedUser”中也出现了相同的错误。更改不太顺利。。它的意思是:sh:/usr/sbin/sendmail.postfix:apache错误日志中没有这样的文件或目录邮件日志中有什么?你安装了后缀吗?或者您正在使用什么?另外:su/usr/sbin/setsebool-P httpd_can_sendmail onI没有启用SELinux,因此它的意思是:“setsebool:SELinux已禁用”。无法运行该命令。还有其他选择吗?我也遇到了同样的问题,djdj的解决方案对我有效——我所要做的就是运行SELinux命令,它就开始工作了。