Laravelで「The stream or file “/LaravelのPath/storage/logs/laravel.log” could not be opened in append mode: failed to open stream: Permission denied The exception occurred while attempting to log: The stream or file」

Laravel
スポンサーリンク

環境

  • Laravel Framework 7.30.6

事象

Laravelを最初にセットアップした直後にブラウザでTOPページにアクセスしたら以下のメッセージ。

The stream or file "/LaravelのPath/storage/logs/laravel.log" could not be opened in append mode: failed to open stream: Permission denied The exception occurred while attempting to log: The stream or file

原因

パーミッションの問題。

ログファイルへの書き込み権限が、不足している。

  • storage

対処

Webサーバー君がアクセスしてるはずなので、Webサーバー君が storage フォルダにアクセスできるようにしてあげる。

以下のいずれかの手段でWebサーバー君が storage フォルダにアクセスできるようになる。

  • storageフォルダのパーミッションを777にする(やったらだめよx)
  • storageフォルダのオーナーをWebサーバーに変更する
  • storageフォルダのパーミッションでユーザーとグループだけフル権限与えて、その他には最低限の権限にする

わたすは、3つ目を採用するだす。

storage/ の、パーミッションを確認したらデフォで775になってた。

とりま、パーミッションはこのまんまにしておく。

例として
Webサーバがapacheだとする。

フォルダ所有オーナー(ユーザー)がhogeだとする。

apacheを、フォルダ所有オーナー(ユーザー)がhogeグループに参加させる。

# gpasswd -a apache hoge
ユーザ apache をグループ hoge に追加
# 

追加されてる事確認

# cat /etc/group  | grep hoge
hoge:x:1010:apache

ブラウザでTOPページにアクセス。

正常化。

その他

また、ググっていたら以下のフォルダも対象だよと言ってる記事も合った。

  • bootstrap/cache

コメント