#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