contenu des fichiers mis (meta/services.JSON): n'a pas réussi à ouvrir le flux: Permission refusée

Je suis nouveau à Laravel. J'essayais d'ouvrir http://localhost/test/public/ et j'ai eu

erreur dans le gestionnaire d'exception.

j'ai cherché sur Google autour et changé la permission de répertoire de stockage en utilisant chmod -R 777 app/storage mais en vain.

j'ai changé debug=>true en app.php et j'ai visité la page et J'ai eu une erreur dans le gestionnaire d'exception:

le flux ou le fichier "/var/www/html/test/app/stockage/logs/laravel.journal" n'a pas pu être ouvert: n'a pas ouvert le flux: Permission refusée dans /var/www/html/test/bootstrap/compilé.php: 8423

puis j'ai changé les permissions du répertoire de stockage en utilisant la commande chmod -R 644 app/storage et l'erreur 'Erreur dans le gestionnaire d'exception' a disparu et une page est chargée. Mais là-dedans je reçois ceci:

file_put_contents(/var/www/html/laravel/app/stockage/meta/services.json): n'a pas ouvert le flux: Autorisation refusée

142
demandé sur kenorb 2014-05-08 15:10:22

29 réponses

Suggestion de vsmoraes a travaillé pour moi:

Laravel >= 5,4

php artisan cache:clear 
chmod -R 777 storage/
composer dump-autoload

Laravel < 5,4

php artisan cache:clear 
chmod -R 777 app/storage 
composer dump-autoload
294
répondu ecairol 2017-12-06 20:24:30

pour les Googleurs qui ont été confrontés à ce problème avec Laravel 5.

il s'agit d'un problème de permission causé par des utilisateurs différents essayant d'écrire sur le même fichier journal dans le dossier storage/logs avec des permissions différentes.

ce qui se passe est que votre config laravel est probablement configuré pour enregistrer les erreurs quotidiennement et donc votre serveur web (apache / nginx) pourrait créer ce fichier sous un utilisateur par défaut en fonction de votre environnement il peut être quelque chose comme _www sur OSX ou www-data sur les systèmes * NIX, puis le problème vient quand vous avez pu exécuter certaines commandes artisan et a obtenu quelques erreurs, de sorte que l'artisan écrira ce fichier, mais avec un utilisateur différent parce que PHP sur le terminal est exécuté par un utilisateur différent en fait votre utilisateur de connexion, vous pouvez le vérifier en exécutant cette commande:

php -i | grep USER

si votre login utilisateur créé ce fichier log votre serveur web ne sera pas en mesure d'écrire des erreurs et vice-versa parce que laravel écrit des fichiers journaux avec les permissions 655 par défaut, ce qui permet seulement au propriétaire d'y écrire.

pour corriger ce temporaire, vous devez donner manuellement les permissions pour le groupe 664 à ce fichier pour que votre utilisateur login et celui du serveur web puissent écrire dans ce fichier log.

pour éviter ce problème de façon permanente, vous pouvez configurer des permissions appropriées quand un nouveau fichier est créé dans le storage/logs dir en héritant les permissions de l'annuaire cette réponse https://unix.stackexchange.com/a/115632 peut vous aider à aborder avec cela.

63
répondu Adriano Rosa 2017-04-13 12:36:30

Pour tout le monde à l'aide de Laravel 5, Homestead et Mac, essayez ceci:

mkdir storage/framework/views
40
répondu Hans P 2015-10-17 19:08:39

vous ne devez pas donner 777 permissions. C'est un risque pour la sécurité. Pour les utilisateurs Ubuntu, dans Laravel 5, Je sugest à changer recursively de propriétaire pour le stockage de répertoire:

Try the following:

sudo chown -R www-data:www-data storage

dans les systèmes basés sur Ubuntu, www-data est l'utilisateur apache.

31
répondu RibeiroSt 2016-11-22 16:18:47

parfois SELINUX causé ce problème; vous pouvez désactiver selinux avec cette commande.

sudo setenforce 0
28
répondu mahrad 2015-03-19 05:26:02

Problème résolu

php artisan cache:clear
sudo chmod -R 777 vendor storage

cela permet la permission d'écriture de l'application, le cadre, les journaux espèrent que cela aidera

18
répondu user3470929 2016-07-02 02:29:23

pour les utilisateurs vagabonds, la solution est:

(vagabond) php artisan cache:clear

(en dehors de vagrant) chmod -R 777/app / stockage

(in vagrant) compositeur dump-autoload

assurez-vous que vous chmod dans votre environnement local et pas à l'intérieur de vagrant est important ici!

15
répondu Brendan 2016-04-30 23:45:00

réessayez avec chmod -R 755 /var/www/html/test/app/storage . Utiliser avec sudo pour Operation not permitted dans chmod. Utilisez la permission de Check owner si vous avez toujours l'erreur.

10
répondu Khay 2017-03-10 02:18:33

selon Laravel 5.4 qui est la dernière fois que j'écris ceci, si vous avez un problème comme celui-ci, vous devez changer la permission. N'ÉCOUTEZ PERSONNE QUI VOUS DIT DE DÉFINIR 777 POUR N'IMPORTE QUEL RÉPERTOIRE. Il a un problème de sécurité. Modifier la permission du dossier de stockage comme ceci

sudo chmod -R 775 storage

modifier la permission du dossier bootstrap comme ceci

sudo chmod -R 775 bootstrap/cache

maintenant s'il Vous Plaît assurez-vous que vous exécutez les deux commandes de votre répertoire d'application. Vous ne rencontrerez plus de problèmes à l'avenir en ce qui concerne la permission. 775 ne compromet pas la sécurité de votre machine.

8
répondu Koushik Das 2017-03-22 19:13:05

Si vous avez Laravel 5 et à la recherche permanente de la solution , applicable à la fois php artisan utilisation de lignes de commande et le serveur web Apache utilisez ceci:

sudo chmod -R 777 vendor storage

echo "umask 000" | sudo tee -a /etc/resolv.conf

sudo service apache2 restart

voir explication détaillée ici .

6
répondu ademin 2017-05-23 12:18:23

suggérez la permission correcte, Si pour Apache,

sudo chown -R apache:apache apppath/app/storage
6
répondu Sean 2017-04-20 06:02:10

NEVER GIVE IT PERMISSION 777!

allez à l'annuaire du projet laravel sur votre terminal et écrivez:

sudo chown -R your-user:www-data /path/to/your/laravel/project/
sudo find /same/path/ -type f -exec chmod 664 {} \;
sudo find /same/path/ -type d -exec chmod 775 {} \;
sudo chgrp -R www-data storage bootstrap/cache
sudo chmod -R ug+rwx storage bootstrap/cache

de cette façon vous faites votre utilisateur le propriétaire et donner des privilèges:

1 Exécuter, 2 écrire, 4 Lire

1+2+4 = 7 signifie (rwx)

2+4 = 6 signifie (rw)

enfin, pour l'accès au stockage, ug+rwx moyens vous donnez à l'utilisateur et au groupe un 7

6
répondu Ibrahim W. 2018-02-14 18:54:03

pour quiconque exécute un OS avec SELINUX: la bonne façon de permettre à httpd d'écrire dans le dossier de stockage laravel est:

sudo semanage fcontext -a -t httpd_sys_rw_content_t '/path/to/www/storage(/.*)?'

ensuite appliquer les changements immédiatement:

sudo restorecon -F -r '/path/to/www/storage'

SELinux peut être une douleur à traiter, mais si elle est présente alors je vous conseille fortement de l'apprendre plutôt que de contourner entièrement.

6
répondu Heather Gaye 2018-07-06 02:49:50

j'ai eu le même problème et les étapes ci-dessous m'a aidé à résoudre le problème.

  1. découvrez que l'utilisateur apache a créé un test.fichier php dans le dossier public avec le code

<?php echo exec('whoami'); ?>

et lancer le fichier à partir du navigateur web. Cela donnerait à l'utilisateur apache. Dans mon cas, c'est ec2-user car j'utilisais l'aws avec cronjob installé dans /etc/cron.d/. Il pourrait être un utilisateur différent pour d'autres.

  1. lancez la commande ci-dessous sur la ligne de commande.

sudo chown -R ec2-user:<usergroup> /app-path/public

vous devez identifier et utiliser le droit" Utilisateur "et" usergroup " ici.

4
répondu KiranD 2017-08-10 02:27:08

Xampp à utiliser:

cd /Applications/XAMPP/htdocs  
chmod -R 775 test/app/storage
3
répondu cristianojeda 2016-07-26 23:05:29
rm storage/logs/laravel.log  

résolu pour moi

2
répondu aad1992 2015-11-16 13:41:06

si vous utilisez laradock, essayez chown -R laradock:www-data ./storage dans votre espace de travail contenant

2
répondu Rob L 2018-02-24 04:00:57

chaque fois que je change d'application.php j'obtiens une permission refusée en écrivant bootstrap/cache/services.json ainsi j'ai fait ceci pour le réparer:

chmod -R 777 bootstrap/cache/
1
répondu malhal 2015-08-08 00:49:12

dans mon cas, la solution était de changer la permission aux répertoires app/storage/framework/views et app/storage/logs .

1
répondu Den 2017-09-04 07:20:32

si quelqu'un d'autre se heurte à un problème similaire avec une erreur de permissions de fichiers fopen, mais est assez sage de ne pas aveuglément chmod 777 voici ma suggestion.

Vérifiez la commande que vous utilisez pour les permissions dont apache a besoin:

fopen('filepath/filename.pdf', 'r');

Le " r " signifie ouvrir en lecture seule, et si vous n'êtes pas modifier le fichier, c'est ce que vous avez mis aussi. Cela signifie qu'apache/www-data a besoin d'au moins la permission de lire ce fichier, ce qui si le fichier est créé par laravel, il aura déjà la permission de lire.

si pour une raison quelconque vous devez écrire dans le fichier:

fopen('filepath/filename.pdf', 'r+');

ensuite, assurez-vous qu'apache a aussi les permissions d'écrire dans le fichier.

http://php.net/manual/en/function.fopen.php

0
répondu Kyle Burkett 2017-01-09 17:39:49

il suffit de démarrer votre serveur en utilisant artisian

php artisian serve

puis accédez à votre projet à partir de L'URL spécifiée:

enter image description here

0
répondu wajih 2017-10-04 14:45:51

j'ai le même problème avec vagrant sur mac. résolu le problème en changeant l'utilisateur d'Apache serveur en https.fichier conf:

# check user for php
[vagrant] ubuntu ~ $ php -i | grep USER
USER => ubuntu
$_SERVER['USER'] => ubuntu
[vagrant] ubuntu ~ $ 

exécuter apache sous l'utilisateur php au lieu de l'utilisateur daemon pour résoudre le problème d'accès au fichier avec php

# change default apache user from daemon to php user
sudo sed -i 's/User daemon/User ubuntu/g' /opt/lampp/etc/httpd.conf
sudo sed -i 's/Group daemon/Group ubuntu/g' /opt/lampp/etc/httpd.conf

maintenant, le fichier cache créé par php peut être lu et édité par apache sans afficher d'erreur d'autorisation d'accès.

0
répondu nigam214 2017-12-03 13:51:28

j'ai eu un problème similaire. (Permission refusée alors que les permissions ont été configurées correctement) avec Laravel 5.2 et 5.5

le problème était que SELinux était activé, ce qui empêchait Apache d'écrire des fichiers même avec le mode 777. Voir Résoudre de réponse de 500 Laravel (non Interceptée UnexpectedValueException: Laravel.journal) pour la question et la réponse.

Peut-être que cela résout le problème pour vous aussi.

0
répondu RoDo 2017-12-05 15:34:44

Après beaucoup d'essais et d'erreurs avec les autorisations du répertoire j'ai fini avec une épiphanie...il n'y avait plus d'espace sur la partition du disque. Je voulais juste partager à assurez-vous que personne d'autre n'est assez stupide pour continuer à chercher la solution dans la mauvaise direction.

sous Linux, vous pouvez utiliser df -h pour vérifier la taille de votre disque et l'espace libre.

0
répondu Frank 2017-12-10 16:26:07

fixer la permission à 777 est certainement une idée terrible!

... mais

si vous obtenez une erreur de permission liée au dossier "stockage" c'est ce qui a fonctionné pour moi:

1) Mettre "storage" et ses sous-dossiers permission à 777 avec

sudo chmod -R 777 storage/

2) dans le navigateur aller à la page d'accueil de laravel laravel / public / (laravel créera les fichiers de stockage initial nécessaires)

3) retourner le coffre-fort 775 permission d'entreposage et ses sous-dossiers

sudo chmod -R 775 storage/
0
répondu Nika Tsogiaidze 2017-12-23 14:39:54

ce problème réellement causé par différents utilisateurs qui veut write/read fichier, mais nié cause propriété différente. peut-être que vous avez installé laravel en tant que' root 'avant de vous connecter à votre site en tant qu'utilisateur' laravel 'où' laravel ' est la propriété par défaut, donc c'est le vrai problème ici. Donc, lorsque l'utilisateur 'laravel 'veut lire/écrire tous les fichiers sur le disque comme par défaut, pour être refusé, parce que ce fichier a la propriété par'root'.

Pour résoudre ce problème, vous pouvez suivre comme ceci:

sudo chown -hR your-user-name /root /nameforlder

ou dans mon cas

sudo chown -hR igmcoid /root /sublaravel

note de bas de page:

  1. root comme nom Premier propriétaire qui a installé avant
  2. your-user-name comme propriété par défaut qui écrit/lit réellement dans le site.
  3. namefolder comme dossier nom qui veut que vous changiez la propriété.
0
répondu Bliss Jaspis 2018-02-27 07:22:08

j'ai eu les mêmes erreurs dans mon projet...

Mais j'ai découvert que j'avais oublié de mettre enctype dans mon formulaire.

<form method="#" action="#" enctype="multipart/form-data">

espère que ça aidera quelque part...

0
répondu Vpa 2018-04-26 04:44:19

pour LARAVEL 5, essayez de créer cache , sessions et vues dossiers dans le stockage/cadre avec la permission 777.

-2
répondu Thiago Bussiki 2015-03-02 22:26:04

j'ai essayé de donner au 777 l'accès au dossier de stockage et il a du travail pour moi

1) Allez dans votre répertoire racine laravel, ( /var/www/html pour moi) et lancez la commande suivante

chmod 777 -R storage
-3
répondu Yur Gasparyan 2017-07-22 21:34:50