web-dev-qa-db-fra.com

Problème d'autorisations avec Laravel sur CentOS

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 ...

J'ai déjà lu/essayé:

15
Martin

Il s'avère que le problème est avec 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 commande

setenforce 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!

48
Martin

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/

1
blamb