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