128 votes

Laravel 5 montre ErrorException file_put_contents failed to open stream : Aucun fichier ou répertoire de ce type

J'ai un projet sur Laravel 5 et je travaille avec lui au bureau et à la maison aussi. Il fonctionne bien, mais récemment, à la maison, il a cessé de fonctionner. Laravel me montre deux ErrorException

file_put_contents(G:\project\storage\framework\views/751d8a0fd8a7d4138c09ceb6a34bb377aa2d6265.php):
failed to open stream: No such file or directory

et

file_put_contents(G:\project\storage\framework/sessions/aIXycR4LIAUBVIqZu0T590paOMIpV8vfZGIroEp0):
failed to open stream: No such file or directory

Je cherche une décision problématique avec Google et je trouve des informations sur les droits corrects. Tous les conseils concernent Linux, mais je travaille sous Windows au bureau et à la maison aussi.

Lorsque j'essaie de vider le cache de l'application et le cache de l'affichage, l'artisan me parle - ...effacé. Mais les données du cache et les vues sont présentes dans le stockage.

Comment puis-je résoudre ce problème ?

7 votes

Vous pouvez essayer de nettoyer le cache "php artisan cache:clear" Je suis sous linux, donc je ne suis pas sûr des permissions sous Windows, mais vérifiez dans les propriétés du dossier s'il n'est pas en lecture seule (clic droit sur le dossier->propriétés).

0 votes

@educolo Je ne pense pas que le problème concerne les droits d'annuaire, parce que plusieurs mois, c'était ok.

0 votes

212voto

Amit Verma Points 857

Le meilleur moyen de résoudre ce problème est d'aller dans le répertoire laravel/bootstrap/cache et supprimer config.php ou vous pouvez le renommer comme suit config.php.old Et votre problème sera réglé.

14 votes

Oui, ça aiderait, mais vider le cache peut faire l'affaire. Exécuter en dehors de la boîte de Vagrant php artisan config:cache reconstruira les chemins pour les applications. Lorsque nous exécutons une application dans la boîte vagrant, les chemins sont différents de ceux des tests dusk par exemple.

0 votes

Pourquoi la configuration de laravel fait-elle mourir laravel ? Fonctionne merci.

1 votes

Config:cache n'a pas fonctionné pour une raison quelconque.

83voto

Elisha Senoo Points 1120

En règle générale, vous devez exécuter la commande php artisan config:cache dans le cadre de votre routine de déploiement de production. Comme solution à votre problème, je vous suggère de recréer le fichier de cache, pour un chargement plus rapide de la configuration.

Pour ce faire, exécutez les commandes Artisan suivantes sur votre ligne de commande

  • php artisan cache:clear
  • php artisan config:cache

Vous pouvez exécuter la commande de manière programmatique en ajoutant ce qui suit à vos routes :

Route::get('/clear-cache', function() {
    $exitCode = Artisan::call('cache:clear');
    $exitCode = Artisan::call('config:cache');
    return 'DONE'; //Return anything
});

Et ensuite, appelez le clear-cache à partir de votre navigateur.

64voto

Evgeniy Points 671

Après quelques recherches, j'ai compris - j'ai des emplacements très similaires, mais différents, pour le projet Root et il est mis en cache dans /bootstrap/cache . Après le nettoyage du cache, le projet a démarré.

0 votes

J'aurais aimé voir ceci car c'est la réponse à ma question sur un fournisseur de services manquant : stackoverflow.com/questions/58192052/

8voto

Azeirah Points 572

Apache + WSL sous Windows

Il s'agit d'une erreur stupide, et d'une réponse différente par rapport aux autres, mais je l'ajoute parce que cela m'est arrivé.

Si vous utilisez WSL (linux bash sur Windows) pour gérer votre application laravel, tout en utilisant votre Windows apache pour faire fonctionner votre serveur, alors l'exécution de toute commande de mise en cache dans le wsl stockera le sentier linux plutôt que le Chemin de Windows aux sessions et autres dossiers.

Solution

Il suffit d'exécuter les commandes d'effacement du cache dans le powershell, plutôt que dans WSL.

$ php artisan optimize

C'était suffisant pour moi.

0 votes

J'ai rencontré le même problème. J'exécute Windows ainsi qu'une instance de Linux sur une machine virtuelle VMWare. Cela me permet de tester à la fois sous Windows et sous Linux, mais lorsque j'ai exécuté l'application php artisan config:cache sous Windows, mon Linux ne pouvait plus charger les pages web de l'application. En allant dans le dossier bootstrap/cache et en supprimant le fichier config.php, j'ai résolu le problème.

7voto

Ce type de problème survient généralement lors de la migration d'un serveur vers un autre, d'un dossier vers un autre. Laravel conserve le cache et la configuration (nom de fichier) lorsque le dossier est différent, ce problème se produit.

Solution Exécutez la commande suivante :

php artisan config:cache

https://laravel.com/docs/5.6/configuration#configuration-caching

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X