web-dev-qa-db-fra.com

Comment corriger l'erreur: laravel.log n'a pas pu être ouvert?

En fait, je suis assez nouveau chez laravel et j'essaie de créer mon tout premier projet. pour une raison quelconque, je continue à avoir 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 permissions mais chmod -R 775 storage n'a pas aidé du tout. 

Permissions

82
FRR

Donc, si quelqu'un d'autre a ce problème, voici ce que vous faites.

  1. Sortez de la VM
  2. À l’aide de la console, accédez au dossier synchronisé (vagrant).
  3. $ Sudo chmod -R 777 app/storage

Même si j'ai créé le projet dans VM à l'aide de l'utilisateur VM, le dossier appartenait à l'utilisateur de l'ordinateur réel. Donc, quand j'ai essayé de faire chmod 777, j'ai eu chmod 775. 

Maintenant ça marche.

Merci à tous ceux qui m'ont aidé à comprendre cette chose

MODIFIER:

En fait, cela ne fonctionnait pas, cela me posait toujours un problème de "permission refusée".

Voici ce que j'ai fait, j'ai modifié mon fichier Vagrantfile comme ceci:

config.vm.synced_folder "./app","/var/www/", create:true,
:owner => "vagrant",
:group => "www-data",
:mount_options => ["dmode=775","fmode=664"]
43
FRR

Parfois, nous devons faire plus, car 

chmod -R 775 storage

Veux dire

7 - Owner can write
7 - Group can write
5 - Others cannot write!

Si votre serveur Web ne fonctionne pas en tant que Vagrant, il ne pourra pas écrire dessus, vous avez donc 2 options:

chmod -R 777 storage

ou changez le groupe en utilisateur de votre serveur web, en supposant que ce soit www-data:

chown -R vagrant:www-data storage

Vous devez ajuster les autorisations de storage et bootstrap/cache.

  • cd dans votre projet Laravel. 
  • Sudo chmod -R 777 storage
  • Sudo chmod -R 777 bootstrap/cache

Selon la configuration de votre serveur Web, vous pourrez peut-être préciser vos autorisations et les accorder uniquement à l'utilisateur de votre serveur Web. Google WEB SERVER NAME Laravel file permissions pour plus d'informations.

Au moment de la rédaction, ceci est pour Laravel 5.4

22
Daniel Dewhurst

Exécutez les commandes suivantes et vous pouvez ajouter Sudo au démarrage de la commande dépend de votre système:

chmod -R 775 storage/framework
chmod -R 775 storage/logs
chmod -R 775 bootstrap/cache 
10
gauravbhai daxini

Ajouter à composer.json

"scripts": {
    "post-install-cmd": [
          "chgrp -R www-data storage bootstrap/cache",
          "chmod -R ug+rwx storage bootstrap/cache"
     ]
}

Après composer install

9
Davron Achilov

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: impossible d'ouvrir flux: autorisation refusée dans/var/www/laravel/bootstrap/compiled .php: 8423

utilisez cette commande dans le terminal:

Sudo chmod -R 777 storage
4
khushbu vaishnav

Cela peut aussi être SELinux. (Centos, RedHat)

Déterminer le statut de SElinux sur le terminal:

$ sestatus

Si le statut est activé, écrivez la commande pour désactiver SElinux

$ setenforce Permissive

Je vous remercie

3
Turan Zamanlı

Pour tous les utilisateurs Centos 7 dans un contexte Laravel, il n'est pas nécessaire de désactiver Selinux, il suffit d'exécuter ces commandes:

yum install policycoreutils-python -y # might not be necessary, try the below first

semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/laravel/storage(/.*)?" # add a new httpd read write content to sellinux for the specific folder, -m for modify
semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/laravel/bootstrap/cache(/.*)?" # same as the above for b/cache

restorecon -Rv /var/www/html/ # this command is very important to, it's like a restart to apply the new rules

Enfin, assurez-vous que vos hôtes, ips et hôtes virtuels sont correctement configurés pour un accès à distance.

Selinux est destiné à restreindre l'accès, même aux utilisateurs root, afin que seuls les éléments nécessaires puissent être consultés, du moins sur une vue d'ensemble, c'est une sécurité supplémentaire cas, il n’est même pas nécessaire.

3
Daniel Santos

essaye ça

  1. cd/var/www/html 
  2. setenforce 0
  3. service httpd restart
2

Dans Laravel, vous devez définir ACL sur les répertoires storage et cache afin que l’utilisateur du serveur Web puisse lire/écrire sur ce répertoire. Ouvrez un nouveau terminal et exécutez les actions suivantes:

HTTPDUSER=$(ps axo user,comm | grep -E '[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx' | grep -v root | head -1 | cut -d\  -f1)

Sudo setfacl -dR -m u:"$HTTPDUSER":rwX -m u:$(whoami):rwX bootstrap/cache storage/
Sudo setfacl -R -m u:"$HTTPDUSER":rwX -m u:$(whoami):rwX bootstrap/cache storage/

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

2
Pratik

Cette solution est spécifique à Laravel 5.5 

Vous devez modifier les autorisations sur quelques dossiers:

chmod -R 775 bootstrap/cache 

La propriété du dossier de projet doit également être la suivante (utilisateur actuel) :( utilisateur du serveur Web)

2
s_user

Je n'aimais pas trop changer les autorisations de mon dossier en 777. Voici comment j'ai résolu le problème.

Tout d'abord, j'ai changé l'utilisateur qui exécute le serveur Web sur ma machine locale (je lance nginx, mais les principes s'appliquent partout):

$> Sudo vim /etc/nginx/nginx.conf
user <my_user> #inside nginx.conf
service nginx reload

Ensuite, j'ai créé un autre fichier index.php dans le dossier public/ pour savoir qui exécutait ma version de php-fpm et où je m'y mettrais pour le changer:

<?php
phpinfo();
?>

En rechargeant la page, j'ai découvert que www-data était l'utilisateur (dans la section environnement). J'ai aussi découvert que j'utilisais PHP 7.1. J'ai procédé pour changer d'utilisateur:

$> Sudo vim /etc/php/7.0/fpm/pool.d/www.conf 
#Look for www-data or the following variables: user, group, listen.user, listen.group.

Enfin, j'ai donné les autorisations suivantes aux dossiers:

Sudo chmod -R 775 ./storage/

Maintenant, je me suis assuré que j'étais le propriétaire des dossiers en utilisant un simple:

ls -al

Si vous définissez vous-même le serveur et les utilisateurs de php-fpm et que les dossiers appartiennent par exemple à root, vous continuerez à rencontrer ce problème. Cela peut arriver si vous avez fait Sudo laravel new <project> en tant que root. Dans ce cas, assurez-vous que vous utilisez une commande récursive chown sur votre projet pour modifier les paramètres user:group. Dans la plupart des cas, www-data est le paramètre principal pour le serveur et php. Dans ce cas, vous devez vous assurer que le dossier n'est pas hors de portée de www-data.

Mon projet est configuré dans mon répertoire personnel. Sur Ubuntu 16.04 et Laravel 5.5.

1
Patrick.SE

(sur Ubuntu ): peut être résolu en 2 étapes simples:

$ Sudo chmod -R 777 storage 

Et

$ Sudo service Apache2 restart
1
rust

Tout d'abord, allez dans le projet et cliquez avec le bouton droit sur le stockage, vérifiez les propriétés et accédez à l'onglet Autorisations. 

 enter image description here

Changer les permissions en utilisant le code ci-dessous

Sudo chmod -R 777 storage

Ensuite, les propriétés de votre fichier peuvent être 

 enter image description here

Ensuite, vérifiez vos paramètres et exécutez la commande laravel cela fonctionnera :)

0
Thilina Dharmasena

Correction de mon problème avec cette commande dans centos 7.6 Server

chcon -R -t httpd_sys_content_t $SITE_PATH

chcon -R -t httpd_sys_rw_content_t $SITE_PATH
0
HamidNE

Si votre serveur Web est nginx, vous pouvez essayer ceci

chown -R nginx:nginx storage
chown -R nginx:nginx bootstrap/cache
0
Mahdi Bashirpour

Dans mon cas particulier, un fichier de configuration a été généré et mis en cache dans le répertoire bootstrap/cache/ de sorte que mes étapes sont les suivantes: 

  1. Supprimer tous les fichiers en cache générés: rm bootstrap/cache/*.php
  2. Créez un nouveau fichier laravel.log et appliquez la mise à jour des autorisations sur le fichier en utilisant: 

    • chmod -R 775 storage
0
Crisoforo Gaspar

Avait ce problème et trouvé cela et il a résolu le problème.

 enter image description here

0
user2848911

Pour les utilisateurs de Windows

1: Cliquez sur Démarrer, tapez INetMgr.exe, 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 + en regard du nom de votre ordinateur.

3: Dans IIS Manager, double-cliquez sur le site que vous souhaitez administrer.

4: Dans la vue des fonctionnalités, double-cliquez sur Authentification.

5: Sélectionnez Authentification anonyme, puis cliquez sur Modifier dans le volet Actions.

6: Dans la boîte de dialogue Modifier les informations d'identification de l'authentification anonyme, cliquez sur l'option Utilisateur spécifique, puis sur Définir.

7: Dans la boîte de dialogue Définir les informations d'identification, entrez le nom d'utilisateur et le mot de passe souhaités, puis cliquez sur OK.

0
Junaid Masood

Vous pourriez faire:

chcon -R -t httpd_sys_rw_content_t storage
0
Leandro Gorriz

Cette erreur peut être corrigée en désactivant Linux.

Vérifier s'il a été activé

sestatus

Tu essayes..

setenforce 0

0
orxanzadeh