it-swarm.com.de

Berechtigungen Ausgabe mit Laravel auf CentOS

Ich habe ein Laravel-Repo in meine CentOS 7-Box geklont. Wenn ich versuche, es auszuführen, erhalte ich eine 500-Fehlermeldung, in der nichts angezeigt wird.

Ich checke also /var/log/httpd/error_log aus und sehe, dass ich einige Berechtigungsfehler habe:

[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

Ich habe folgendes versucht, um die Probleme zu überwinden:

chmod -R 775 storage
chmod -R 775 vendor
chown -R Apache:apache storage

So sieht es jetzt so aus:

-rwxrwxr-x. 1 Apache apache 2156 May 16 11:41 storage/logs/laravel.log

Das hat aber nicht geklappt.

Interessanterweise habe ich früher einige artisan-Befehle falsch eingegeben, und diese schienen der Logdatei Logs hinzuzufügen ...

Ich habe bereits gelesen/ausprobiert:

15
Martin

Das Problem ist mit selinux

Ich habe diese Antwort gefunden , die mein Problem gelöst hat.

Beweisen Sie, dass dies das Problem ist, indem Sie mit dem Befehl selinux ausschalten

setenforce 0

Dies sollte das Schreiben ermöglichen, aber Sie haben die zusätzliche Sicherheit deaktiviert serverweit. Das ist schlecht. Drehen Sie SELinux zurück

setenforce 1

Verwenden Sie dann schließlich SELinux, um das Schreiben der Datei mit diesem .__ zuzulassen. Befehl

chcon -R -t httpd_sys_rw_content_t storage

Und los geht's!

48
Martin

Ich muss mehr Anpassungen für SELinux vornehmen als nur für storage. Insbesondere das config-Verzeichnis kann dieses Problem beim Bootstrapping von Laravel beheben. 

Wenn Sie Sudo setenforce permissive und es funktioniert, drehen Sie es zurück Sudo setenforce enforcing und folgen Sie den Anweisungen unten.

SELinux-Laravel-Setup: 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

In meinem Fall war es ein anderer Unix-Benutzer, so dass dieser funktionierte:

chown -R php-fpm:php-fpm storage
1
wast

Wenden Sie dies für das gesamte Projekt an.

chcon -R -t httpd_sys_rw_content_t project_folder
0
Ramesh KC