[Laravel]ログファイルの書き込みで UnexpectedValueException The stream or file "laravel.log" could not be openedエラー

カテゴリ: Laravel

Laravelでプロジェクトを作成して、プログラムを実行しようとすると下記のエラーが発生する場合があります。

UnexpectedValueException
The stream or file "/path/to/storage/logs/laravel.log" could not be opened: 
failed to open stream: Permission denied

これは、Webサーバを起動しているユーザからログファイルへの書き込み権限が不足しているためです。

原因と対処方法

よくある原因は下記の2点です。

ログディレクトリに書き込み権限がない

Laravelではログファイルはデフォルトでapp/storage/logsディレクトリの下に作成されます。このディレクトリ以下にnginxはapacheユーザでの書き込み権限が必要です

# Laravelプロジェクトのディレクトリに移動
cd /path/to/application

# 権限を書き換え(nginxの場合)
sudo chown -R nginx:nginx app/storage
## 権限を書き換え(apacheの場合)
#sudo chown -R apache:apache app/storage

# storageディレクトリに対して、nginxグループへ書き込み権限を付与
sudo chmod -R 775 app/storage

SELinuxがOnになっている

SELinuxがOnになっている場合は、offにすると解決できる場合があります

# SELinuxをoffにする
sudo setenforce 0

# 設定ファイルを書き換えて、OSを再起動してもSELinuxをoff状態にする
#    -> SELINUX=enforcing
vi /etc/selinux/config
こちらもおススメ

コメントを残す

メールアドレスが公開されることはありません。