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
こちらもおススメ