Laravel Папки кэша хранилища, принадлежащие root, вызывают сбой при очистке кеша - PullRequest
4 голосов
/ 03 августа 2020

У меня есть приложение laravel 7, работающее на сервере (Ubuntu 18.04 LTS, веб-сервер apache2). Моя проблема в том, что php artisan cache:clear действительно возвращает сообщение «Не удалось очистить кеш. Убедитесь, что у вас есть соответствующие разрешения».

Я безуспешно пробовал следующие подходы:

  • chmod -R 775 storage
  • php artisan config:cache
  • удаление вручную "bootstrap / cache / services. php" + "bootstrap / cache / packages. php" + "bootstrap / cache / config. php "

Новые созданные папки кэша в« storage / framework / cache / data »иногда принадлежат пользователю root, это, кажется, проблема.

Если я удалите эти папки вручную, это будет работать до тех пор, пока не будут созданы новые root папки.

С ps -aux Я видел, что процесс laravel запускался от пользователя root. Я изменил это на sudo -u myusername, но это не повлияло на поведение. Я запускаю приложение laravel (php artisan serve) в сценарии r c .local при перезапуске сервера.

Текущий пользователь «myusername» находится в группе www-data.

Ответы [ 2 ]

2 голосов
/ 03 августа 2020

Вы должны запустить веб-сервер от пользователя, который принадлежит к той же группе пользователей, что и ваш текущий пользователь. По умолчанию rc.local вызывает команды от root пользователя, что вам не нужно.

Отредактируйте rc.local следующим образом:

su user01 -c 'php /var/www/artisan serve'

Где user01 - ваш текущий user, а /var/www/artisan - полный путь к вашему файлу artisan. Также, возможно, вам следует указать полный путь к вашему php bin-файлу, например /usr/bin/php или иначе.

Подробнее здесь

0 голосов
/ 03 августа 2020

Проблема должна заключаться в том, что у вас нет папок в пути к хранилищу. У вас должно быть

  1. storage / framework / sessions
  2. storage / framework / views
  3. storage / framework / cache

Попробуйте создать пустые папки, должно работать.

...