Comment corriger l'Erreur: laravel.le journal n'a pas pu être ouvert?
Je suis assez nouveau à laravel, en fait, et je suis en train de créer mon tout premier projet. pour une raison que je reçois ce message d'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 a quelque chose à voir avec les autorisations, mais chmod -R 775 storage
n'aide pas du tout.
- Êtes-vous sûr que vous êtes dans le bon répertoire lors de l'exécution de cette commande chmod? Essayez chmod -R 755 /var/www/laravel/app/de stockage. Aussi, quels sont les utilisateur et groupe d'? Essayez ls -al /var/www/laravel/app/stockage
- mêmes résultats (j'ai mis à jour mon premier post pour montrer les autorisations du dossier)
- Essayez 777 sur le stockage, certains serveurs sont plus configurés de manière plus stricte et 755 n'est pas suffisant.
- :/ pour une raison quelconque, il ne fonctionne toujours pas. Je ne l'ai pas mentionné avant, mais je SUIS en utilisant vagrant. donc mon dossier www est sur une VM (apache, php et tout le reste est en cours d'exécution sur elle). Je ne sais pas si cela a quelque chose à voir avec quoi que ce soit, mais j'ai pensé que je le mentionne juste au cas où. (Je suis de la création de mon projet au sein de la machine virtuelle, en utilisant compositeur)
- Vous avez besoin de changer le groupe de l'utilisateur qui votre serveur web s'exécute (www généralement) plutôt que de vous-même, si vous souhaitez conserver les autorisations comme 755. "chgrp -R www /var/www/laravel/app/stockage"
- Ces gars qui suggèrent 777, essayez google cette phrase: "la production db_password filetype:env inurl:com"
Vous devez vous connecter pour publier un commentaire.
Jamais mis un répertoire en 777. vous devriez changer de répertoire de la propriété. alors réglez votre utilisateur courant que vous êtes connecté en tant que propriétaire et utilisateur du serveur web (www-data, apache, ...) que le groupe.
Vous pouvez essayer ceci:
alors à définir le répertoire de l'autorisation essayez ceci:
Mise à jour:
Serveur web de l'utilisateur et de groupe dépend de votre serveur web et votre système d'exploitation. pour découvrir ce que votre serveur web d'utilisateur et de groupe, utilisez les commandes suivantes. pour nginx utilisation:
ps aux|grep nginx|grep -v grep
pour apache utilisation:
ps aux | egrep '(apache|httpd)'
sudo chown -R {your current user}:www-data storage bootstrap/cache
chown: www-data: illegal group name
. Réglage du répertoire en 777 est la seule chose qui fonctionne_www
essayer cettesudo chgrp -R _www bootstrap/cache
. il serait utile de prendre un coup d'oeil à ce post: stackoverflow.com/a/6419695/2125114daemon
. Je suppose que c'est la nouvelle_www
Parfois, nous devons faire plus, parce que
Signifie
Si votre serveur n'est pas en cours d'exécution en tant que Vagabond, il ne sera pas en mesure d'écrire, si vous avez 2 options:
ou changer de groupe à votre serveur de l'utilisateur, en supposant que ce
www-data
:chown -R apache:apache laravelproject
chown -R vagrant:www-data storage
l'a fait pour moi, merci.www-data: illegal group name
Donc, si quelqu'un d'autre a eu ce problème, voici ce que vous faites.
$ sudo chmod -R 777 app/storage
Même si j'ai créé le projet au sein de la machine virtuelle en utilisant la machine virtuelle de l'utilisateur, le dossier appartenait à l'utilisateur de l'ordinateur réel; donc, whent en essayant de ne chmod 777 j'ai eu chmod 775.
Maintenant ça fonctionne.
Merci à tous ceux qui m'ont aidé à comprendre cette chose
EDIT:
En fait, il ne fonctionnait pas, il a encore donné de moi une "permission denied" problème.
Voici ce que j'ai fait, j'ai modifié mon Vagrantfile comme ceci:
Vous avez besoin d'ajuster les autorisations de
storage
etbootstrap/cache
.cd
dans votre Laravel projet.sudo chmod -R 777 storage
sudo chmod -R 777 bootstrap/cache
Selon la façon dont votre serveur web est configuré, vous pouvez être en mesure d'être plus précis avec vos autorisations, et seulement leur accorder à l'utilisateur de votre serveur web. Google
WEB SERVER NAME Laravel file permissions
pour plus d'informations.Au moment de l'écriture, c'est pour Laravel 5.4
Il peut également être SELinux. (Centos, RedHat)
Déterminer le statut de SElinux sur le terminal:
Si le statut est activé, la commande d'écriture pour désactiver SElinux
Ou vous pouvez exécuter cette commande
$ sudo setenforce 0
Merci
Ajouter à
composer.json
Après
composer install
Exécuter les commandes suivantes et vous pouvez ajouter
sudo
à partir de la commande dépend de votre système:Pour tous Centos 7 utilisateurs sur un Laravel contexte, il n'est pas nécessaire de désactiver Selinux, il suffit d'exécuter ces commandes:
Enfin, assurez-vous que vos hôtes, ips et des hôtes virtuels sont tous correctement pour l'accès à distance.
Selinux est destiné à restreindre l'accès à la racine des utilisateurs, de sorte que le nécessaire des choses pourrait être accessible, au moins sur une généraliste vue d'ensemble, c'est une sécurité supplémentaire, la désactivation n'est pas une bonne pratique, il existe de nombreux liens pour en savoir Selinux, mais pour ce cas, il n'est même pas nécessaire.
Cette solution est spécifique pour laravel 5.5
Vous devez modifier les autorisations de quelques dossiers:
chmod -R -777 de stockage/logs
chmod -R -777 de stockage/cadre
pour les dossiers ci-dessus 775 ou 765 n'a pas fonctionné pour mon projet
Aussi la propriété du dossier de projet doit être comme suit (utilisateur actuel):(utilisateur du serveur web)
essayer cette
setenforce
mais en tout cas il est faux de complètement désactiver SELinux juste pour corriger un problème d'autorisation.Je n'ai pas trop envie de changer ma autorisations de dossier en 777. Voici comment je suis allé sur la résolution de ce problème.
Tout d'abord, j'ai changé l'utilisateur qui exécute le serveur web sur ma machine locale(je exécuter nginx, mais les principes s'appliquent partout):
Par la suite, j'ai créé un autre
index.php
fichier sous lepublic/
dossier pour découvrir qui était à l'exécution de mon php-fpm version et l'endroit où je voudrais aller sur la modification que:Le rechargement de la page, j'ai trouvé que
www-data
était l'utilisateur(en vertu de la section de l'environnement). J'ai aussi découvert que j'était en cours d'exécution php 7.1. J'ai procédé à la modification de l'utilisateur:Enfin, j'ai donné les autorisations suivantes pour les dossiers:
Maintenant, j'ai fait en sorte que j'ai été le propriétaire des dossiers à l'aide d'un simple:
Si vous configurez le serveur et php-fpm utilisateurs à vous-même et de la dossiers sont la propriété de root par exemple, alors vous garderez rencontrer ce problème. Cela peut se produire si vous avez fait un
sudo laravel new <project>
en tant que root. Dans ce cas, assurez-vous d'utiliser un récursifchown
commande sur votre projet changer leuser:group
paramètres. Dans la plupart des cas de défaut,www-data
est le paramètre principal pour le serveur et php, dans ce cas, il s'agit de faire en sorte que le dossier n'est pas hors dewww-data
s'atteindre.Mon projet d'installation dans mon répertoire home. Sur Ubuntu 16.04 et Laravel 5.5.
Que vous pouvez faire:
(sur Ubuntu) : Peut être résolu en 2 étapes simples :
Et
Dans Laravel, vous devez définir des ACL sur
storage
etcache
répertoire de sorte que l'utilisateur du serveur web peut de lecture/écriture sur le répertoire. Ouvrez un nouveau terminal et exécuter les suivantes: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
Pour les utilisateurs de windows
1: Cliquez sur Démarrer, tapez INetMgr.exe et puis cliquez sur Entrée. Si vous y êtes invité, cliquez sur Continuer pour élever vos autorisations.
2: Dans la section Connexions, cliquez sur le bouton + à côté du nom de votre ordinateur.
3: Dans le Gestionnaire des services, double-cliquez sur le site que vous souhaitez administrer.
4: Dans la Vue des Fonctionnalités, double-cliquez sur Authentification.
5: Sélectionnez l'Authentification Anonyme, puis cliquez sur Modifier dans le volet Actions.
6: Dans l'Édition Anonyme de l'Authentification des informations d'Identification de la boîte de dialogue, cliquez sur l'option utilisateur Spécifique, puis cliquez sur Définir.
7: Dans le Jeu d'informations d'Identification de la boîte de dialogue, saisissez le nom d'utilisateur et le mot de passe de votre choix, puis cliquez sur OK.
Eu ce problème et trouvé cela et il a résolu le problème.
Cette erreur peut être résolu par la désactivation de Linux.
Vérifier si elle a été activée
sestatus
Vous essayez..
setenforce 0
Pour cette erreur:
D'erreur dans le gestionnaire d'exception: Le flux ou le fichier "/var/www/laravel/app/stockage/logs/laravel.journal" n'a pas pu être ouvert: failed to open stream: Permission denied in /var/www/laravel/bootstrap/compilé.php:8423
utiliser cette commande dans le terminal:
Allez d'abord le projet et cliquez droit sur l'entreposage et de vérifier les propriétés et allez à l'onglet Autorisations
Modifier les autorisations à l'aide de code ci-dessous
Ensuite votre fichier de propriétés peuvent être
Ensuite, vérifiez vos paramètres et exécuter laravel de commande ça marche 🙂
Dans mon cas particulier, j'ai eu un fichier de configuration généré et mis en cache dans le
bootstrap/cache/
répertoire mes pas où:rm bootstrap/cache/*.php
Créer un nouveau
laravel.log
de fichiers et d'appliquer la mise à jour des autorisations sur le fichier à l'aide de:chmod -R 775 storage
Fixe mon problème avec cette commande dans centos 7.6 Serveur
Si votre serveur web est
nginx
vous pouvez essayer ceSELinux outils de gestion
travail pour mon projet