Моя проблема в том, что скрипт php, который должен отправлять почту, не отправляет ее, если я запускаю его в браузере, но работает в cli. Это не помогает Почта PHP ()функция, работающая в CLI, но не в Apache
В обоих /etc/php/7.0/fpm и /etc/php/7.0/cli одинаковых настройках почты:
SMTP = localhost
smtp_port = 25
sendmail_path = "/usr/bin/msmtp -C /etc/msmtprc -t"
mail.add_x_header = On
mail.log = /var/log/maillog
Если я ввожу терминал
php -r mail("my_mail@gmail.com", "Test", "test");
, он работает, работает, если я набираю
sudo -u www-data php -r mail("my_mail@gmail.com", "Test", "test");
Однако, если я пытаюсь отправить почту из интерактивного режима php php -a
а затем просто введите там (скрыто) «Test», «test»); Я получаю / etc / msmtprc доступ запрещен
. Я попытался chmod 666 / etc / msmtprc
(однако ls -al
показывает -rw ------- 1 www-data www-data 267 4 апреля 11 : 10 / etc / msmtprc
, поэтому я думаю, что нет необходимости разрешать доступ) Я получаю сообщение об ошибке вроде msmtp: / etc / msmtprc: содержит секреты и, следовательно, должен принадлежать вам
файл msmtprc
изменен таким образом chmod 600 msmtprc
, согласно многим руководствам.
Неяк я зразумеў, што не так, проста спрабуючы розныя канфігурацыі, таму, пішучы адказ на ўласнае пытанне :) /etc/php/7.0/ У некаторых падручніках / пытаннях гаворыцца, што для працы msmtp трэба адрэдагаваць php.ini у тэчцы fpm і cli. Гэта не зусім дакладна. Каб apache2 працаваў з msmtp, каб вы маглі выкарыстоўваць функцыю mail () для адпраўкі паведамленняў электроннай пошты ў php-сцэнарыях, вам трэба наладзіць php.ini у /etc/php/7.0/apache2.Канфігурацыя пошты ўсіх 3 файлаў php.ini павінна быць аднолькавай, што
SMTP = localhost
smtp_port = 25
sendmail_path = "/usr/bin/msmtp -C /etc/msmtprc -t"
mail.add_x_header = On
mail.log = /var/log/maillog
Звярніце ўвагу, што опцыя -C паказвае шлях да вашага файла msmtprc, які павінен быць такім жа, як тут. Акрамя таго, звярніце ўвагу, што, паколькі вы ўсталявалі і сканфігуравалі msmtp, каб вы маглі адпраўляць паведамленні з каманднага радка (не выкарыстоўваючы php), вам не трэба ўсталёўваць sendmail на свой сервер. Проста наладзьце свае файлы php.ini, і ўсё будзе працаваць