Autorisation de Laravel 5 refusée lors de l’écriture dans le fichier journal

J’ai Ubuntu et Laravel 5 Framework et je vois l’écran blanc dans le navigateur.
Lorsque je change de storage/logs permissions du répertoire, cela aide, mais je dois le faire tous les jours, à cause de la configuration journalière du journal.

Les permissions pour les dossiers de storage et de vendor doivent restr à 775 , pour des raisons de sécurité évidentes.

Cependant, votre ordinateur et votre serveur Apache doivent pouvoir écrire dans ces dossiers. Ex: lorsque vous exécutez des commandes comme php artisan , votre ordinateur doit écrire dans le fichier de journalisation en storage .

Tout ce que vous avez à faire est de donner la propriété des dossiers à Apache:

 sudo chown www-data:www-data /path/to/your/project/vendor sudo chown www-data:www-data /path/to/your/project/storage 

Ensuite, vous devez append votre ordinateur (référencé par son username d’ username ) au groupe auquel appartient le serveur Apache. Ainsi :

 sudo usermod -a -G www-data userName 

Le plus souvent, groupName est www-data mais vous pouvez vouloir le remplacer par votre groupe correct.

  • chmod 777 est en général un risque de sécurité extrêmement risqué.
  • chmod 775 pour le dossier de stockage est très bien compte tenu de l’utilisateur aussi
    appartient au groupe de serveurs Web.

  • avec -R est extrêmement risqué car pour les fichiers, une autorisation d’exécution n’est absolument pas requirejse.

  • chmod 664 pour les fichiers à l’intérieur du stockage. chmod 775 pour les dossiers à l’intérieur

Réponse courte:

sudo chmod -R 777 vendor storage
echo "umask 000" | sudo tee -a /etc/resolv.conf
sudo service apache2 restart

Réponse étendue:

Lorsque vous lancez le framework Laravel 5 sur un serveur Apache avec une option «par défaut» activée par défaut pour la création de fichiers journaux, il est parfois interdit d’écrire dans des fichiers journaux en raison des permissions de fichiers.
Habituellement, lorsque vous avez un projet PHP, tous les fichiers appartiennent à www-data utilisateur www-data , et votre utilisateur actuel n’a pas besoin d’écrire dans les fichiers journaux.
En ce qui concerne le Laravel, deux processus différents doivent être écrits dans vos fichiers journaux:
1) Serveur Apache (utilisateur www-data ) lorsque vous faites quelque chose dans votre navigateur;
2) Processus php artisan something (votre utilisateur) lorsque vous exécutez un object php artisan something en ligne de commande.

Bien sûr, vous pouvez exécuter sudo -u www-data php artisan your_command (comme suggéré ici ) chaque fois que vous voulez utiliser artisan, mais c’est un peu agaçant.
Tout d’abord, vous devez accorder des permissions aux fournisseurs et aux répertoires de stockage pour les utilisateurs Apache. Le moyen le plus simple (mais pas le meilleur) est d’effectuer: sudo chmod -R 777 vendor storage

Voyons maintenant ce qui se passe lorsque le fichier journal est créé dans les deux cas.

Si initialement logfile storage/logs/laravel-2015-mm-dd.log été créé par l’erreur storage/logs/laravel-2015-mm-dd.log par la commande php artisan something (cas 2), le fichier journal aura

 `-rw-rw-r-- your_user:your_user` 

permissions.
Si elle a été créée par votre serveur Apache (cas 1), qui se lance habituellement sous www-data utilisateur www-data , les permissions ressembleront à ceci:

 -rw-rr-- www-data:www-data 

Donc, ma suggestion est de changer les permissions pour les fichiers nouvellement créés par apache.
Ajoutons la ligne umask 000 au fichier /etc/resolv.conf .

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

À présent,

 sudo service apache2 restart 

C’est tout.
Soyez conscient, cette solution est applicable uniquement pour l’ environnement de développement , en raison du risque de sécurité possible.