Функция PHP mail (), работающая из командной строки, но не работающая с apache

Моя проблема в том, что скрипт 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 , согласно многим руководствам.

0
задан 4 April 2019 в 22:19
1 ответ

Неяк я зразумеў, што не так, проста спрабуючы розныя канфігурацыі, таму, пішучы адказ на ўласнае пытанне :) /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, і ўсё будзе працаваць

0
ответ дан 5 December 2019 в 03:35

Теги

Похожие вопросы