エラー内容
Laravelをインストールし、ブラウザでアクセスしようとすると、以下のようなエラーが発生しました。
The stream or file "~/laravel/storage/logs/laravel.log" could not be opened in append mode: failed to open stream: Permission denied
※「〜」の部分は/からのディレクトリパスが入ります。
原因はstorageディレクトリに書き込もうとしたユーザに書き込み権限がなかっためでした。
本エラーが発生したLaravelは、Docker上で環境構築していました。
LaravelをインストールするcomposerコマンドはDockerコンテナ内のrootユーザで実行されるため、Webサーバのユーザ(今回はwww-data)が書き込むことができない、という状況でした。
対応方法
1.rootユーザ以外にも書き込み権限を付与する
2.書き込むユーザを所有者にする
のいずれかの方法が考えられます。
1の場合は、下記コマンドでパーミッション変更できます。
# chmod 777 ./storage
2の場合は、下記コマンドで所有者変更で対応できます。
# chown www-data:www-data ./storage/ -R
※今回は所有者をwww-dataにしていますが、自分の環境に合わせてユーザ名は変更してください。