Подтвердить что ты не робот

Laravel throws "Загрузочный/кеш-каталог должен присутствовать и записываться" после обновления

Я использовал 'composer update', который обновил несколько пакетов. Во время процесса обновления веб-сайт по-прежнему функционирует. Однако после того, как он говорит: "Скомпилированный файл служб удален", веб-сайт не загружается и вместо этого говорит:

Exception in ProviderRepository.php line 190:
The bootstrap/cache directory must be present and writable.

Самое странное, когда я снова запускаю "композиторское обновление", веб-сайт снова начинает работать, пока файл скомпилированных служб не будет удален, и в этот момент он снова выдаст ту же ошибку. Я уже пробовал обычные вещи, которые должны выполняться при появлении этой ошибки (chown -R все для правильного пользователя/группы и chmod все файлы и папки 664 и 775 соответственно).

Я не знаю, что делать дальше, поскольку ошибка не кажется "правильной".

4b9b3361

Ответ 1

Попробуйте это после выполнения обновления для композитора:

php artisan cache:clear

Ответ 2

В файле каталога Laravel запустите:

sudo chmod -R 775 bootstrap/cache/

Ответ 3

Краткая версия. Если вы загружаете что-то вроде AWS eb cli, убедитесь, что развертывается папка начальной загрузки/кеширования (не говоря о ее содержимом).


Некоторые предпосылки моего ответа

Я использую Amazon Web Services Elastic Beanstalk для размещения моего проекта Laravel. Поскольку я только начал использовать Laravel, у меня нет большого представления о его функционировании. Два дня назад Мои новые развертывания все вываливались на полпути с сообщением об ошибке OP.

Ранее в тот день я понял, что не использовал

 php artisan config:cache

для кэширования конфигураций, чтобы ускорить работу. И я добавил то же самое в предложениях composer.json "post-install-cmd" и "post-update-cmd".
И я также добавил выражение в файле .ebignore, чтобы не загружать содержимое /bootstrap/cache (поскольку его содержимое зависит от среды aka, мои настройки localhost не имеют никакого значения на моем производственном сервере)

И facepalm я не понял, что это остановит загрузку загрузочной/кеш-папки (как, например, git, eb cli игнорирует пустые папки).
Итак, когда я начал развертывать ночью. Развертывания предназначались для краха.

Итак, теперь я только что разместил файл с пустыми местами (скажем) .gitkeep в bootstrap/cache. И развертывания снова работают:)
(Хотя проблема была настолько простой, что я понял причину после ssh-ing и выкапывал экземпляр EBS EC2 для некоторых сладких часов сна ~.)

Ответ 4

Я использую cmder на Windows 10 в режиме без повышенных прав (без прав администратора). команда php artisan cache: clear у меня не сработала. Папка bootstrap/cache не существует. Я создал эту папку и удалил ее только для чтения из папок начальной загрузки и начальной загрузки/кэша. И composer install, и composer update теперь работают.

Ответ 5

Вы можете сделать это первым:

     php artisan cache:clear

если это не сработает! Вы должны установить разрешение 775, как показано ниже:

     sudo chmod -R 775 bootstrap/cache/

Ответ 6

Если веб-сервер (например, Apache или Nginx) используется в качестве front-end, решение состоит в том, чтобы сделать каталог bootstrap/cache принадлежащим группе веб-серверов, Для Nginx:

 $ sudo chgrp -R nginx bootstrap/cache

Ответ 7

это работает для меня запустить в папке проекта

 sudo chmod -R 777 bootstrap/cashe

чем бежать

 composer update

чем бежать

 cache:clear