Почта: не удалось открыть поток: отказано в доступе?
Я получаю это предупреждение, отправляя письма с 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 и посмотрел, исправит ли это. Если нет, то я бы удалил блок заголовка и продолжал удалять, пока он не начал работать.