I'm trying to figure out why the mail function in PHP fails when called via web browser (i.e. apache), but I can run the same script from the command line using
php -f mailtest.php
This is one of my client's Fedora servers, so I don't grok it completely, but I do have root access should I need to change anything.
from php.ini:
sendmail_path = /usr/sbin/sendmail -t -i
Not sure if this could matter, but /usr/sbin/sendmail is a symlink to /etc/alternatives/mta, which is a symlink back to /usr/sbin/sendmail.sendmail. FWIW the apache user does have permission to run sendmail (tested sendmail directly from the command line).
OS: Fedora Core 7 Linux (kernel 2.6.23.17)
Apache: 2.2.8
PHP: 5.2.6
Any help here will be greatly appreciated!
This is my first answer here on StackOverflow! :o
So I had the same issue than you, matt! I use OpenSuse. I figured out that
postfix check
resulted withso I ran the next commands:
and then, I tried to simple PHP script from my browser to test if everything works fine: (assuming you want to mail abc@gmail.com)
and that's fine! I hope you will fix the issue with this method
Is it a user permissions error? Your account and the one used to execute PHP scripts may have different privileges.
Anything in apache's error_log? Is PHP being run as an apache module or a CGI binary?
EDIT: Hmmm... nothing in the error log. What does the call to
mail(...)
return? Anything interesting in the mail log? This will vary depending on the MTA, often /var/log/maillogEDIT 2: Is
safe_mode
turned on and are you using themail()
function's additional_parameters ?I found the problem. SELinux was preventing apache from being able to use sendmail. To diagnose, I used
Then to actually fix the problem:
Read more about it here.