вызванном джобой через supervisor ?
Есть Guzzle , в нем есть StreamHandler который пишет что то в лог.
Если QUEUE_CONNECTION = sync - то все ок.
Eсли QUEUE_CONNECTION = database - то имеем исключение
There is no existing directory at "//./storage/logs/services/google" and it could not be created: Permission denied
* откуда то в пути появляются 2 слэша ...
Звучит как проблемы с правами при запуске через supervisor. Я так понимаю при sync работает под веб-юзером, а при значении`database` в зависимости от настроек воркера supervisor…
в конфиге супервизора указан текущий пользователь в параметре user=
Там еще такая строчка может быть для логов: stdout_logfile=/var/www/html/mydomain/worker.log
Я бы попробовал перед проблемным кодом записать какой то тестовый файл, чтобы проверить, что проблема не в правах. Возможно проблема в конфигурации или в формате записи путей к файлу.
при запуске команды из под пользователя - все ок - пишется в тестовый файл если запускать ее же через job и supervisor - то вот file_put_contents(storage/logs/services/google/test.log): Failed to open stream: No such file or directory
Рабочий каталог может другой становится, есть возможность указать полный путь?
указание directory - сработало ! версия супервизора 3.3.5
directory в воркере помогло?
в конфиге супервизора для лары /etc/supervisor/conf.d/laravel-worker.conf . В основе был тот, что в офф. документации. Было command=php /home/forge/app.com/artisan queue:work sqs --sleep=3 --tries=3 --max-time=3600 Стало directory=/home/forge/app.com command=php artisan queue:work sqs --sleep=3 --tries=3 --max-time=3600 И начало записывать в файлы ...
Обсуждают сегодня