Почта: не удалось открыть поток: отказано в доступе?

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

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

В доступе отказано что?

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

mail("mail@domain.com", "subject", "body");

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

3 ответа

Решение

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

Решение:

 sudo chmod -R 755 *
 sudo chmod  777 1

F# $% ^% загадочные сообщения об ошибках php

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

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

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

 $mail_sent = mail('address@domain.com', 'subject', 'message');

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

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

Другие вопросы по тегам