问题
I get this warning sending mails with php Warning: mail(1) [function.mail]: failed to open stream: Permission denied in /home/...
- using ssmtp and gmail as smtp
- PHP 5.3.1
- nothing in the logs (no errors)
- the mail gets to destination
- the permissions of the files are rwxrxrx
Permission denied to what?
Even calling something as simple as
mail("mail@domain.com", "subject", "body");
I still getting this warning
回答1:
The problem is that the webserver user is not able to write and/or read the mail log file. For a propper configuration:
1) create the folder and the file for the email logging. For example:
touch /var/log/php5/mail.log
2) set the logging file in php.ini:
mail.log = /var/log/php5/mail.log
3) set the owner and the group for that folder/file in case needed:
check the owner and the group with
ls -la /var/log/php5
in case needed, change the group (change www-data for whatever your web server's group is)
sudo chgrp -R www-data /var/log/php5
in case needed, change the owner (change www-data for whatever your web server's user is)
sudo chown -R www-data /var/log/php5
回答2:
Does it work if you simplify it?
$mail_sent = mail('address@domain.com', 'subject', 'message');
If it does, then you know that mail works.
After that, I would remove the $eol stuff and see if that fixes it. If not, then I would remove the header block and keep removing stuff until it starts working.
回答3:
It turns out to be a file permissions problems after all. But not in the scripts, but in the directory.
I ran a chmod -R 777 *
and the warning went of. upon further examination I found a file called 1
, and this file contained a log of the sent mails.
The warning was php telling me that he was unable to open this file
Solution:
sudo chmod -R 755 *
sudo chmod 777 1
F#$%^% cryptic php error messages
来源:https://stackoverflow.com/questions/1906403/mail-failed-to-open-stream-permission-denied