Pour vous arrêter dès le début, il n’ya pas de problème d’autorisation./storage est récursivement chmodded 777
et tout le dossier du projet est ordonné par Apache: apache
J'ai même renommé le fichier journal en ... vieux et Apache en a créé un nouveau ... s'il n'avait pas les droits d'écriture, il n'aurait pas été autorisé à le créer.
Fonctionnant sous la version 6.6 de CentOS (finale)
Déployé le projet depuis git, le Homestead travaille pour mon collègue.
Erreur complète:
[Lun. Mai 18 10:17:58 2015] [erreur] [client 86.124.208.14] PHP Fatal erreur: exception non capturée 'UnexpectedValueException' avec le message 'Le flux ou le fichier "/var/www/vhosts/mapper.pavementlayers.com/storage/logs/laravel-2015-05-18.log" Impossible d'ouvrir: échec de l'ouverture du flux: autorisation refusée 'dans /var/www/vhosts/mapper.pavementlayers.com/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php:84\nStack trace:\n # 0 /var/www/vhosts/mapper.pavementlayers.com/vendor/monolog/monolog/src/Monolog/Handler/RotatingFileHandler.php(88): Monolog\Handler\StreamHandler-> write (Array)\n # 1 /var/www/vhosts/mapper.pavementlayers.com/vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php(37): Monolog\Handler\RotatingFileHandler-> write (Array)\n # 2 /var/www/vhosts/mapper.pavementlayers.com/vendor/monolog/monolog/src/Monolog/Logger.php(265): Monolog\Handler\AbstractProcessingHandler-> handle (Array)\n # 3 /var/www/vhosts/mapper.pavementlayers.com/vendor/monolog/monolog/src/Monolog/Logger.php(543): Monolog\Logger-> addRecord (400, 'exception' Symf ... ', Array)\n # 4 /var/www/vhosts/mapper.pavementl in /var/www/vhosts/mapper.pavementlayers.com/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php à la ligne 84
Il est possible que SElinux empêche Apache de créer ce fichier.
Pour tester cela, vous pouvez désactiver SElinux temporairement avec la commande suivante:
setenforce 0
Cela placera SElinux en mode permissif. Cela signifie que vous recevez toujours un message d'erreur dans votre fichier journal SElinux mais que SElinux ne bloquera pas la commande.
Pour réactiver SElinux, vous pouvez taper:
setenforce 1
Ou redémarrez votre serveur CentOS.
Malheureusement, j'avais également des problèmes avec Laravel 5 sous CentOS et la cause en était SElinux . J'ai fini par désabonnement SElinux et je sais que ce n'est pas la bonne chose à faire, mais je n'ai pas eu le temps de le faire. faire travailler les deux ensemble pour le moment!
Donc, j'ai finalement eu le temps d'enquêter plus avant et j'ai fait travailler SELinux avec Laravel 5. Je viens de mettre à jour ce post pour les personnes susceptibles de rencontrer ce problème car désactiver SELinux n'est pas la meilleure stratégie mentionnée ci-dessus.
Trois choses doivent être faites:
Les dossiers Storage et Bootstrap/Cache doivent avoir le bon contexte SELinux. Ceci peut être réalisé via les commandes suivantes.
semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/<Laravel Site>/storage(/.*)?"
semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/<Laravel Site>/bootstrap/cache(/.*)?"
Le contexte SELinux doit être appliqué aux répertoires.
restorecon -Rv "/var/www/<Laravel Site>/storage"
restorecon -Rv "/var/www/<Laravel Site>/bootstrap/cache"
L'utilisateur Apache doit disposer des droits pour créer des fichiers dans les deux répertoires. Ceci peut être réalisé via un ACL dans CentOS 7.
setfacl -R -m u:Apache:rwX storage/
setfacl -R -m u:Apache:rwX bootstrap/cache/
La dernière chose à faire est de réactiver SELinux.
Essayez ces commandes pour laravel 5
$ php artisan cache:clear
$ Sudo chmod -R 777 app/storage
$ composer.phar dump-autoload
Cela se produit parce que laravel n’a pas l’autorisation d’écrire dans le fichier journal, du moins dans mon cas.
Cela a fonctionné pour moi, Laravel 5.4 et plus
$ Sudo chmod -R 755 storage/
$ Sudo chown -R www-data storage/
$ Sudo chgrp -R www-data storage/
$ php artisan cache:clear
$ php artisan config:cache
$ composer dumpautoload
Toutes les étapes ne sont pas nécessaires.
Vous devez vous assurer que le dossier storage
existe. Si vous déployez depuis git, assurez-vous que le dossier storage
est suivi et créé automatiquement.
pour centos 7
# ausearch -c 'httpd' --raw | audit2allow -M my-httpd
# semodule -i my-httpd.pp
ON Laravel 5.7
$ cd /var/www/html/$ Cache de l'artisan php: effacer Cache de l'application effacé!