ユーザ用ツール

サイト用ツール


サイドバー

プログラム言語:php:laravel:staging.error:file_put_contents:failed_to_open_stream:permission_denied_と出るとき

【Laravel】staging.ERROR: file_put_contents(...): failed to open stream: Permission denied と出るとき

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

サイトにアクセスし、エラーが解消されているのを確認して完了。

コメント

コメントを入力. Wiki文法が有効です:
 
プログラム言語/php/laravel/staging.error/file_put_contents/failed_to_open_stream/permission_denied_と出るとき.txt · 最終更新: 2020/05/26 12:09 by humolife