Laravel lance l'erreur "le répertoire bootstrap/cache doit être présent et accessible en écriture" 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 avoir dit 'le fichier de services compilé a été supprimé' , le site web ne se charge pas et dit à la place:

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

La chose la plus étrange est que lorsque je lance à nouveau 'composer update', le site web recommence à fonctionner, jusqu'à ce que le fichier de services compilé soit supprimé, auquel cas il renvoie 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 "correct"..

26
demandé sur Peter Bennink 2017-05-01 14:28:51

5 réponses

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

php artisan cache:clear
88
répondu Jim Wright 2017-05-05 17:31:16

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

sudo chmod -R 775 bootstrap/cache/
6
répondu mpalencia 2017-05-02 09:31:12

Version courte : si le téléchargement utilise quelque chose comme AWS eb cli Vérifiez si le dossierbootstrap/cache (ne parle pas de son contenu) est en cours de déploiement.


Certains arrière-plan de 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 pas beaucoup d'idée de son fonctionnement. Il y a deux jours mes nouveaux déploiements se sont tous écrasés à mi chemin avec Message D'erreur D'OP.

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

 php artisan config:cache

Pour mettre en cache les configurations pour rendre les choses plus rapides. Et j'ai ajouté la même chose dans composer.les clauses " post-install-cmd" et " post-update-cmd" de json. {[12] } et j'ai également ajouté la déclaration dans .ebignore Fichier pour ne pas télécharger le contenu de / bootstrap / cache (comme son contenu dépend de l'environnement aka mes configurations localhost n'ont aucune signification sur mon serveur de production)

Et facepalm Je n'ai pas réalisé que cela empêcherait le dossier bootstrap / cache d'être téléchargé (comme git, eb cli ignore les dossiers vides).
Donc, quand j'ai commencé à déployer la nuit, Les déploiements étaient destinés à l'écrasement.

Donc, maintenant je viens de placer empty-placeholder (say) .gitkeep fichier dans bootstrap / cache . Et les déploiements fonctionnent encore une fois :)
(Bien que le problème était si simple, j'ai réalisé le raison après ssh-ing et creuser une instance EBS EC2 pour quelques heures de sommeil doux ~.~ )

3
répondu Vinay Vissh 2017-05-30 13:23:02

Si un serveur web (par exemple Apache ou Nginx ) est utilisé comme front-end, la solution consiste à faire du répertoire bootstrap/cache la propriété de web server group. Pour Nginx:

 $ sudo chgrp -R nginx bootstrap/cache
0
répondu Mugoma J. Okomba 2017-08-25 22:09:41

Im en utilisant cmder sur windows 10 en mode non élevé (non-Admin). commande php artisan cache: clear n'a pas fonctionné pour moi. Le dossier bootstrap / cache n'existait pas. J'ai créé le dossier et supprimé en lecture seule à la fois le dossier bootstrap et le dossier bootstrap/cache. L'installation du compositeur et la mise à jour du compositeur fonctionnent maintenant.

0
répondu Sadegh Ameri 2018-08-31 17:03:31