it-swarm.com.ru

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

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

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

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

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

38
Peter Bennink

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

php artisan cache:clear
113
Jim Wright

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

Sudo chmod -R 775 bootstrap/cache/
7
mpalencia

Короткая версия : При загрузке с использованием чего-то вроде AWS eb cli Убедитесь, что папка bootstrap/cache (не говоря о ее содержимом) развернута.


Некоторый фон позади моего ответа

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

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

 php artisan config:cache

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

И facepalm Я не осознавал, что это остановит загрузку папки bootstrap/cache (как, например, git, eb cli игнорирует пустые папки) .
Итак, когда я начал развертывать ночью, развертывания должны были привести к краху .

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

3
Vinay Vissh

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

1
Sadegh Ameri

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

     php artisan cache:clear

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

     Sudo chmod -R 775 bootstrap/cache/
1
Hadi Note

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

 Sudo chmod -R 777 bootstrap/cashe

чем бежать 

 composer update

чем бежать 

 cache:clear
0
mohamed anwer

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

 $ Sudo chgrp -R nginx bootstrap/cache
0
Mugoma J. Okomba