Je suis assez nouveau chez laravel, en fait et j'essaye de créer mon tout premier projet. pour une raison quelconque, je continue à recevoir cette erreur (je n'ai même pas encore commencé à coder)
Error in exception handler: The stream or file "/var/www/laravel/app/storage/logs/laravel.log" could not be opened: failed to open stream: Permission denied in /var/www/laravel/bootstrap/compiled.php:8423
J'ai lu que cela avait quelque chose à voir avec les autorisations mais chmod -R 775 storage
n'a pas du tout aidé.
Réponses:
Ne définissez jamais un répertoire sur 777 . vous devez changer la propriété du répertoire. définissez donc votre utilisateur actuel avec lequel vous êtes connecté en tant que propriétaire et l'utilisateur du serveur Web (www-data, apache, ...) en tant que groupe. Vous pouvez essayer ceci:
puis pour définir l'autorisation de répertoire, essayez ceci:
Mettre à jour:
L'utilisateur et le groupe du serveur Web dépendent de votre serveur Web et de votre système d'exploitation. pour déterminer quel est l'utilisateur et le groupe de votre serveur Web, utilisez les commandes suivantes. pour une utilisation nginx:
ps aux|grep nginx|grep -v grep
pour une utilisation apache:
ps aux | egrep '(apache|httpd)'
la source
sudo chown -R {your current user}:www-data storage bootstrap/cache
chown: www-data: illegal group name
. Définir le répertoire sur 777 est la seule chose qui fonctionne_www
essaie cecisudo chgrp -R _www bootstrap/cache
. il serait utile de jeter un œil à cet article: stackoverflow.com/a/6419695/2125114N'utilisez jamais 777 pour les répertoires sur votre serveur live, mais sur votre propre machine, nous devons parfois en faire plus que 775, car
Veux dire
Si votre serveur Web ne fonctionne pas en tant que Vagrant, il ne pourra pas y écrire, vous avez donc 2 options:
ou remplacez le groupe par l'utilisateur de votre serveur Web, en supposant que c'est
www-data
:la source
chown -R apache:apache laravelproject
chown -R vagrant:www-data storage
je l'ai fait pour moi, merci.www-data: illegal group name
Pour résoudre ce problème, vous devez changer la propriété du répertoire en l'utilisateur Unix utilisé par le serveur Web.
Même si j'ai créé le projet dans la machine virtuelle en utilisant l'utilisateur de la machine virtuelle, le dossier appartenait à l'utilisateur sur l'ordinateur réel; alors, en essayant de
Maintenant ça marche.
Merci à tous ceux qui m'ont aidé à comprendre cette chose
ÉDITER:
En fait, cela ne fonctionnait toujours pas, cela me posait toujours un problème de "permission refusée".
Voici ce que j'ai fait, j'ai modifié mon Vagrantfile comme ceci:
la source
Il peut également s'agir de SELinux. (Centos, RedHat)
Déterminez l'état de SElinux sur le terminal:
Si l'état est activé, écrivez la commande pour désactiver SElinux
Ou vous pouvez exécuter cette commande
$ sudo setenforce 0
la source
Vous devez ajuster les autorisations de
storage
etbootstrap/cache
.cd
dans votre projet Laravel.sudo chmod -R 755 storage
sudo chmod -R 755 bootstrap/cache
Vous pouvez essayer 777 si 755 ne fonctionne pas. 777 n'est pas sécurisé cependant!
Selon la configuration de votre serveur Web, vous pourrez peut-être être plus précis avec vos autorisations et ne les accorder qu'à l'utilisateur de votre serveur Web. Google
WEB SERVER NAME Laravel file permissions
pour plus d'informations.Au moment de la rédaction de cet article, c'est pour Laravel 5.4
la source
Ajouter à
composer.json
Après
composer install
la source
Exécutez les commandes suivantes et vous pouvez ajouter
sudo
au démarrage de la commande dépend de votre système:la source
Pour tous les utilisateurs de Centos 7 dans un contexte Laravel, il n'est pas nécessaire de désactiver Selinux, exécutez simplement ces commandes:
Enfin, assurez-vous que vos hôtes, ips et hôtes virtuels sont tous correctement accessibles à distance.
Selinux est destiné à restreindre l'accès même aux utilisateurs root, donc seuls les éléments nécessaires peuvent être accédés, au moins sur un aperçu généraliste, c'est une sécurité supplémentaire, le désactiver n'est pas une bonne pratique, il existe de nombreux liens pour apprendre Selinux, mais pour cela cas, il n'est même pas nécessaire.
la source
Si vous utilisez cmd
Si vous utilisez GUI
Allez d'abord dans le projet et faites un clic droit sur le stockage et vérifiez les propriétés et allez dans l'onglet Permissions
Modifiez les autorisations en utilisant le code ci-dessous
Ensuite, les propriétés de votre fichier peuvent être
Ensuite, vérifiez vos paramètres et exécutez la commande laravel cela fonctionnera :)
la source
Dans Laravel, vous devez définir ACL sur
storage
etcache
répertoire afin que l'utilisateur du serveur Web puisse lire / écrire sur le répertoire. Ouvrez un nouveau terminal et exécutez ce qui suit:Références:
https://symfony.com/doc/3.4/setup/file_permissions.html#using-acl-on-a-system-that-supports-setfacl-linux-bsd
https://linux.die.net/man/1/setfacl
la source
Il peut être tard mais peut aider quelqu'un, changer les autorisations de répertoire a fonctionné pour moi.
En supposant que votre projet Laravel est dans le
/var/www/html/
répertoire. Accédez à ce répertoire.Modifiez ensuite les autorisations des répertoires
storage/
etbootstrap/cache/
.la source
Cette solution est spécifique pour laravel 5.5
Vous devez changer les permissions de quelques dossiers: chmod -R -777 storage / logs chmod -R -777 storage / framework pour les dossiers ci-dessus 775 ou 765 n'a pas fonctionné pour mon projet
La propriété du dossier du projet doit également être la suivante (utilisateur actuel) :( utilisateur du serveur Web)
la source
Vous pourriez faire:
la source
Je n'étais pas trop désireux de changer mes autorisations de dossier en 777. Voici comment j'ai résolu ce problème.
Tout d'abord, j'ai changé l'utilisateur qui exécute le serveur Web sur ma machine locale (j'exécute nginx, mais les principes s'appliquent partout):
Ensuite, j'ai créé un autre
index.php
fichier dans lepublic/
dossier pour savoir qui exécutait ma version php-fpm et où j'allais changer cela:En rechargeant la page, j'ai découvert que
www-data
c'était l'utilisateur (sous la section environnement). J'ai également découvert que j'utilisais php 7.1. J'ai procédé au changement d'utilisateur:Enfin, j'ai donné les autorisations suivantes aux dossiers:
Maintenant, je me suis assuré que j'étais le propriétaire des dossiers en utilisant un simple:
Si vous définissez le serveur et les utilisateurs php-fpm sur vous-même et que les dossiers appartiennent à root par exemple, vous continuerez à rencontrer ce problème. Cela peut arriver si vous avez effectué un
sudo laravel new <project>
fichier en tant que root. Dans ce cas, assurez-vous d'utiliser unechown
commande récursive sur votre projet pour modifier lesuser:group
paramètres. Dans la plupart des cas par défaut,www-data
est le paramètre principal pour le serveur et php, dans ce cas, il s'agit de s'assurer que le dossier n'est pas hors dewww-data
portée.Mon projet est installé dans mon répertoire personnel. Sur Ubuntu 16.04 et Laravel 5.5.
la source
essaye ça
la source
setenforce
mais dans tous les cas, il est faux de désactiver complètement SELinux juste pour résoudre un problème d'autorisation.Dans mon cas particulier, j'avais un fichier de configuration généré et mis en cache dans le
bootstrap/cache/
répertoire, donc mes étapes étaient les suivantes:rm bootstrap/cache/*.php
Créez un nouveau
laravel.log
fichier et appliquez la mise à jour des permissions sur le fichier en utilisant:chmod -R 775 storage
la source
(sur Ubuntu ): peut être résolu en 2 étapes simples:
Et
la source
Supprimer
"/var/www/laravel/app/storage/logs/laravel.log"
et réessayer:rm storage/logs/laravel.log
la source
Avait ce problème et trouvé cela et il a résolu le problème.
la source
Cette erreur peut être corrigée en désactivant Linux.
Vérifiez s'il a été activé
sestatus
Tu essayes..
setenforce 0
la source
Pour cette erreur:
Erreur dans le gestionnaire d'exceptions: le flux ou le fichier "/var/www/laravel/app/storage/logs/laravel.log" n'a pas pu être ouvert: échec de l'ouverture du flux: autorisation refusée dans / var / www / laravel / bootstrap / compiled .php: 8423
utilisez cette commande dans le terminal:
la source
Correction de mon problème avec cette commande dans le serveur centos 7.6
la source