Laravel をインストール後、サイトにアクセスすると以下のようなエラーが出た場合の対処について。
staging.ERROR: file_put_contents(/var/www/.../storage/framework/views/XXX.php): failed to open stream: Permission denied at /var/www/.../vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php:133)
staging.ERROR: file_put_contents(/var/www/.../storage/framework/sessions/XXX): failed to open stream: Permission denied at /var/www/.../vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php:133)
それぞれ「storage/framework/views」と「storage/framework/sessions」に対して権限がないためエラーが出ています。
ls コマンドで確認したところ、該当ディレクトリのパーミッションが「rwxr-xr-x」で 766 になってました。
Laravel(Apache)に権限を与える必要があります。
そこで今回は、該当ディレクトリのオーナーグループに apache を追加し、グループに書き込み権限を与えることで対応しました。
# プロジェクトディレクトリに移動 cd PROJECT_NAME # storage ディレクトリのオーナーグループを確認 ls -l | grep storage drwxr-xr-x 5 USER_NAME GROUP_NAME M D H:i storage # apache ユーザの確認 id apache uid=48(apache) gid=48(apache) groups=48(apache) # GROUP_NAME に apache ユーザを追加 sudo gpasswd -a apache GROUP_NAME # GROUP_NAME が追加されているのを確認 id apache uid=48(apache) gid=48(apache) groups=48(apache),1001(GROUP_NAME) # storage 以下のディレクトリ全てのパーミッションを 775 に変更 find storage -type d -exec chmod 775 {} + # bootstrap/cache のパーミッションを 775 に変更 chmod 775 bootstrap/cache
サイトにアクセスし、エラーが解消されているのを確認して完了。
コメント