Laravel7 Очередь и супервизор => Письма не отправляются

#laravel #laravel-7

#laravel #laravel-7

Вопрос:

Я использую очередь для асинхронной отправки подтверждения заказа и не заставляю пользователя ждать завершения платежа во внешнем интерфейсе. При использовании это работает нормально php artisan queue:work — все обрабатывается так, как должно.

Теперь, когда я хочу позволить супервизору обрабатывать отправку, задания последовательно завершаются ошибкой со следующим исключением:

[2020-08-17 19:54:12] производство.ОШИБКА: не удается отправить сообщение без адреса отправителя {«исключение»: «[object] (Swift_TransportException(код: 0): не удается отправить сообщение без адреса отправителя в /var/www/backend/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/AbstractSmtpTransport.php:195)

Это, очевидно, указывает на то, что в .env не настроен адрес отправителя. Однако есть, как и в config/mail.php . Я предполагаю, что супервайзер не может прочитать глобальный MAIL_FROM_ADDRESS in .env или не имеет доступа к .env , но я не уверен, как этого добиться.

Это моя конфигурация супервизора (как указано в Документах Laravel):

 [program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/backend/artisan queue:work --sleep=3 --tries=3
autostart=true
autorestart=true
user=www-data
numprocs=2
redirect_stderr=true
stdout_logfile=/var/www/backend/worker.log
stopwaitsecs=3600
  

Я использую QUEUE_CONNECTION=database .
На сервере запущен nginx в Ubuntu.

Я также уже пытался разрешить использование супервизора user=root , но безуспешно.
Кто-нибудь испытывал нечто подобное?

Ответ №1:

Попробуйте задать каталог:

 [program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
directory=/var/www/backend
command=php artisan queue:work --sleep=3 --tries=3
autostart=true
autorestart=true
user=www-data
numprocs=2
redirect_stderr=true
stdout_logfile=/var/www/backend/worker.log
stopwaitsecs=3600