web-dev-qa-db-fra.com

Laravel lance l'erreur 'Le répertoire bootstrap/cache doit être présent et inscriptible' après la mise à jour

J'ai utilisé 'composer update', qui a mis à jour quelques paquets. Pendant le processus de mise à jour, le site Web fonctionne toujours. Cependant, après la mention "Le fichier des services compilés a été supprimé", le site Web ne se charge pas et indique plutôt:

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

Le plus étrange est que, lorsque je lance à nouveau 'composer update', le site Web recommence à fonctionner jusqu'à ce que le fichier des services compilés soit supprimé, ce qui provoque à nouveau la même erreur. J'ai déjà essayé les choses habituelles qui devraient être faites lorsque cette erreur apparaît (chown -R tout au bon utilisateur/groupe et chmod tous les fichiers et dossiers 664 et 775 respectivement). 

Je ne sais plus quoi faire, car l'erreur ne semble pas "correcte" ..

32
Peter Bennink

Essayez ceci après avoir exécuté la mise à jour du compositeur:

php artisan cache:clear
113
Jim Wright

Sur votre fichier de répertoire Laravel, exécutez:

Sudo chmod -R 775 bootstrap/cache/
7
mpalencia

Version abrégée: Si le téléchargement utilise quelque chose comme AWS eb cli _ Vérifiez si le dossier bootstrap/cache (sans parler de son contenu) est en cours de déploiement.


Un peu d’arrière-plan derrière ma réponse

J'utilise Elastic Beanstalk d'Amazon Web Services pour héberger mon projet Laravel. Comme je viens de commencer à utiliser Laravel, je n’ai aucune idée de son fonctionnement. Il y a deux jours, mes nouveaux déploiements se sont tous écrasés à mi-chemin avec le message d'erreur de OP. 

Plus tôt ce jour-là, j'ai réalisé que je n'utilisais pas 

 php artisan config:cache

mettre en cache des configurations pour rendre les choses plus rapides. Et j'ai ajouté la même chose dans les clauses composer.json "post-install-cmd" et "post-update-cmd" .
Et j’ai aussi ajouté une déclaration dans le fichier .ebignore pour ne pas télécharger le contenu de / bootstrap/cache (car son contenu dépend de l’environnement aka mes configurations d’hôte local n’ont aucune signification mon serveur de production)

Et facepalm Je ne savais pas que cela empêcherait le téléchargement du dossier bootstrap/cache (comme Like, git, eb cli ignore les dossiers vides) .
Donc, quand j'ai commencé à me déployer la nuit, les déploiements étaient censés se bloquer .

Donc, je viens de placer un fichier vide réservé (par exemple) .gitkeep fichier dans bootstrap/cache. Et les déploiements fonctionnent à nouveau:)
(Même si le problème était si simple, j’ai compris la raison après le ssh-ing et le creusement d’une instance EBS EC2 pendant quelques heures de sommeil doux ~. ~)

3
Vinay Vissh

Utilisation de cmder sur Windows 10 en mode non élevé (non-Admin) . Commande php artisan cache: clear ne fonctionnait pas pour moi . et supprimé en lecture seule des dossiers bootstrap et bootstrap/cache . L’installation et la mise à jour de Composer fonctionnent maintenant.

1
Sadegh Ameri

Vous pouvez faire ceci en premier:

     php artisan cache:clear

si ça ne marche pas! Vous devez définir l'autorisation 775 comme ci-dessous:

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

ça marche pour moi dans le dossier du projet

 Sudo chmod -R 777 bootstrap/cashe

que courir 

 composer update

que courir 

 cache:clear
0
mohamed anwer

Si un serveur Web (par exemple, Apache ou Nginx ) est utilisé en tant que serveur frontal, la solution consiste à rendre le répertoire bootstrap/cache appartenant au groupe de serveurs Web. Pour Nginx :

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