web-dev-qa-db-ja.com

CentOSでのLaravelのパーミッションの問題

laravelリポジトリをCentOS 7ボックスに複製しました。実行しようとすると、何も表示されずに500エラーが発生します。

だから私はチェックアウト/var/log/httpd/error_logそして、私はいくつかの許可エラーを持っていることがわかります:

[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

問題を克服するために、次のことを行いました。

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

そのため、次のように表示されます。

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

しかし、それはうまくいきませんでした。

興味深いことに、以前にいくつかのartisanコマンドを誤って入力しましたが、それらはログをログファイルに追加するようでした...

私はすでに読んだ/試した:

20
Martin

問題はselinuxにあります

この答えが見つかりました 、これで問題が解決しました。

コマンドでselinuxをオフにして、これが問題であることを証明してください

setenforce 0

これにより書き込みが可能になりますが、追加のセキュリティはサーバー全体でオフになっています。それは良くないね。 SELinuxを元に戻す

setenforce 1

最後に、SELinuxを使用して、このコマンドを使用してファイルの書き込みを許可します

chcon -R -t httpd_sys_rw_content_t storage

そして、あなたはオフです!

62
Martin

storageだけでなく、SELinuxの調整をさらに行う必要があります。特に、config dirを使用すると、Laravel=ブートストラップでこの問題を解決できます。

_Sudo setenforce permissive_で動作する場合は、_Sudo setenforce enforcing_に戻し、以下に従ってください。

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(/.*)?"

_

configには次のものは必要ないかもしれませんが、私は必要としました。あなたが必要としない限り、これを実行しないことが最も安全かもしれません:

Sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/site/laravel/config(/.*)?"

次に、ディレクトリの調整が行われた後にリセットします。

_restorecon -Rv /var/www/site/_

3
blamb

私の場合、それは別のUNIXユーザーだったので、これはうまくいきました:

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

これをプロジェクト全体に適用します。

chcon -R -t httpd_sys_rw_content_t project_folder
0
Ramesh KC