Mail: не удалось открыть поток: Permission denied?

Я получаю это предупреждение, отправляя письма с php Предупреждение: mail (1) [function.mail]: не удалось открыть поток: разрешение отклонено в /home/...

  • используя ssmtp и gmail как smtp
  • PHP 5.3.1
  • ничего в журналах (без ошибок)
  • почта отправляется в пункт назначения
  • Разрешениями файлов являются rwxrxrx

Разрешение отклонено на что?

Даже вызов чего-то простого, как

mail ( "[email protected]", "subject", "body" );

Я все еще получаю это предупреждение

Ответы

Ответ 1

В конце концов, это проблемы с правами доступа к файлам. Но не в скриптах, а в каталоге. Я пробежал chmod -R 777 *, и предупреждение прошло. после дальнейшего изучения я нашел файл с именем 1, и этот файл содержал журнал отправленных писем. Предупреждение php сообщило мне, что он не смог открыть этот файл

Решение:

 sudo chmod -R 755 *
 sudo chmod  777 1

F # $% ^% сообщений об ошибках cryptic php

Ответ 2

Проблема заключается в том, что пользователь веб-сервера не может писать и/или читать файл журнала почты. Для конфигурации пропеллера:

1) создайте папку и файл для ведения журнала электронной почты. Например:

touch /var/log/php5/mail.log

2) установите файл регистрации в php.ini:

mail.log = /var/log/php5/mail.log

3) установите владельца и группу для этой папки/файла в случае необходимости:

проверьте владельца и группу с помощью

ls -la /var/log/php5

в случае необходимости, измените группу (измените www-данные для любой группы веб-серверов)

sudo chgrp -R www-data /var/log/php5

в случае необходимости, измените владельца (измените www-данные для любого пользователя вашего веб-сервера)

sudo chown -R www-data /var/log/php5

Ответ 3

Это работает, если вы упростите его?

 $mail_sent = mail('[email protected]', 'subject', 'message');

Если это так, то вы знаете, что почта работает.

После этого я удалю файл $eol и посмотрю, исправляет ли он это. Если нет, то я удаляю блок заголовка и продолжаю удалять файлы до тех пор, пока он не начнет работать.