PHP mail()可以从命令行运行,但不能运行apache

mat*_*att 4 php apache email command-line sendmail

我试图弄清楚为什么PHP中的邮件功能在通过Web浏览器(即apache)调用时失败,但我可以从命令行运行相同的脚本

php -f mailtest.php

这是我客户端的Fedora服务器之一,所以我不完全了解它,但如果我需要更改任何内容,我确实有root访问权限.

来自php.ini:

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

不确定这是否重要,但是/ usr/sbin/sendmail是/ etc/alternatives/mta的符号链接,这是一个符号链接回/usr/sbin/sendmail.sendmail.FWIW apache用户确实有权运行sendmail(直接从命令行测试sendmail).

OS: Fedora Core 7 Linux (kernel 2.6.23.17)  
Apache: 2.2.8  
PHP: 5.2.6
Run Code Online (Sandbox Code Playgroud)

任何帮助将非常感谢!

mat*_*att 19

我发现了这个问题.SELinux阻止了apache能够使用sendmail.诊断,我用过

$ sestatus -b | grep sendmail  
httpd_can_sendmail                   off
Run Code Online (Sandbox Code Playgroud)

然后实际解决问题:

$ restorecon /usr/sbin/sendmail
$ setsebool -P httpd_can_sendmail 1
Run Code Online (Sandbox Code Playgroud)

在这里阅读更多相关信息.