views:

229

answers:

2

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

A: 

Does it work if you simplify it?

 $mail_sent = mail('[email protected]', '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.

easement
well, actually, i get the warning by calling mail alone. That's why i haven't put any source code.I DO get the warning by putting mail('[email protected]', 'subject', 'message');The mail works, it gets to destination without problems, but the warning stills there...
The Disintegrator
What are the permissions on /home/.....? You need at least read. I would try chmod 777, test mail('[email protected]', 'subject', 'message'); and see if it works. After that work backwards locking it down. Also you may need to grant execute on the parent directory.
easement
In that case I would just suppress it: `@mail('address...`.
jensgram
The warning is there for some reason. I'm not going to simply ignore it.If this serves for something. The mail() call takes up to 2 seconds
The Disintegrator
A: 

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

The Disintegrator