mail: failed to open stream: Permission denied?

The Disintegrator picture The Disintegrator · Dec 15, 2009 · Viewed 27.1k times · Source

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("[email protected]", "subject", "body");

I still getting this warning

Answer

Packet Tracer picture Packet Tracer · Dec 19, 2011

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