J'ai cloné un dépôt laravel dans ma boîte CentOS 7. Lorsque j'essaie de l'exécuter, j'obtiens une erreur 500 sans rien affiché.
Donc, je vérifie /var/log/httpd/error_log
et je vois que j'ai des erreurs d'autorisations:
[Mon May 16 11:39:32.996441 2016] [:error] [pid 2434] [client 104.156.67.195:39136] PHP Fatal error: Uncaught UnexpectedValueException: The stream or file "/var/www/html/MYSITE/storage/logs/laravel.log" could not be opened: failed to open stream: Permission denied in /var/www/html/MYSITE/bootstrap/cache/compiled.php:13701
Stack trace:
#0 /var/www/html/MYSITE/bootstrap/cache/compiled.php(13635): Monolog\\Handler\\StreamHandler->write(Array)
#1 /var/www/html/MYSITE/bootstrap/cache/compiled.php(13396): Monolog\\Handler\\AbstractProcessingHandler->handle(Array)
#2 /var/www/html/MYSITE/bootstrap/cache/compiled.php(13494): Monolog\\Logger->addRecord(400, Object(Symfony\\Component\\Debug\\Exception\\FatalErrorException), Array)
#3 /var/www/html/MYSITE/bootstrap/cache/compiled.php(13189): Monolog\\Logger->error(Object(Symfony\\Component\\Debug\\Exception\\FatalErrorException), Array)
#4 /var/www/html/MYSITE/bootstrap/cache/compiled.php(13160): Illuminate\\Log\\Writer->writeLog('error', Object(Symfony\\Component\\Debug\\Exception\\FatalErrorException), Array)
# in /var/www/html/MYSITE/bootstrap/cache/compiled.php on line 13701
J'ai fait ce qui suit pour essayer de surmonter les problèmes:
chmod -R 775 storage
chmod -R 775 vendor
chown -R Apache:apache storage
Donc, cela se voit maintenant:
-rwxrwxr-x. 1 Apache apache 2156 May 16 11:41 storage/logs/laravel.log
Mais ça n'a pas marché.
Chose intéressante, j’ai mal saisi certaines commandes artisan
précédemment et celles-ci semblaient ajouter des journaux au fichier journal ...
selinux
J'ai trouvé cette réponse , qui a résolu mon problème.
Prouvez que c'est le problème en désactivant
selinux
avec la commandesetenforce 0
Cela devrait permettre d’écrire, mais vous avez désactivé la sécurité supplémentaire à l'échelle du serveur. C'est mauvais. Retourner SELinux
setenforce 1
Enfin, utilisez finalement SELinux pour permettre l’écriture du fichier en utilisant ceci commander
chcon -R -t httpd_sys_rw_content_t storage
Et c'est parti!
J'ai besoin de faire plus d'ajustements pour SELinux que pour storage
. Surtout le répertoire config
peut vous aider à résoudre ce problème lors du démarrage de Laravel.
Si vous Sudo setenforce permissive
et que cela fonctionne, remettez-le Sudo setenforce enforcing
puis suivez les instructions ci-dessous.
Configuration de SELinux laravel:
Sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/site/laravel/storage(/.*)?"
Sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/site/laravel/bootstrap/cache(/.*)?"
Sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/site/laravel/config(/.*)?"
restorecon -Rv /var/www/site/