【Laravel】Permission denied: laravel.log を解消する方法
web-application-framework laravel
“The stream or file “laravel.log” could not be opened in append mode: Failed to open stream: Permission denied.”
このエラーが出た時の対処方法をまとめました。

前提
- Laravelプロジェクトがある。
LaravelプロジェクトをNGINXで動かす方法については「LaravelプロジェクトをNGINXで動かす」をご覧ください。
環境
- Windows 11
- Ubuntu 24.04.3 LTS (WSL2ディストリビューション)
- Docker Engine 28.4.0
- Amazon Linux 2023(DockerコンテナのOS)
- PHP 8.2.15 (fpm-fcgi)
- NGINX 1.24.0
- Laravel 11, 12
パーミッションを修正する
laravel.log があるディレクトリの権限を確認してみます。
ディレクトリのパスは config/logging.php で確認できます。
今回はデフォルトの storage/logs とします。
drwxr-xr-x root root logs
root ユーザーがログのディレクトリを所持していることがわかりましたが、ログを書き込むのは nginx ユーザーのはずなので所有者を変更します。
$ chown -R nginx:nginx storage
再び権限を確認します。
drwxr-xr-x nginx nginx logs
これでエラーは解消されるはずです。
PHP-FPMユーザーを変更する
それでもエラーが残っている場合はPHP-FPMのユーザーが nginx ではない可能性があります。
www.conf (/etc/php-fpm.d にあるはず)を確認して user や group が apache などだった場合、nginx に変更してPHP-FPMを再起動してください。
[www]
user = nginx
group = nginx
関連記事
- 【Laravel】Permission denied: laravel.log を解消する方法
- Laravel + ReactでQRコードを生成・表示する方法【qrcode.react】
- Stripeの支払い成功後にWebhooksで購入後の処理を実行する
- Laravel Cashier (Stripe) インストールでつまずいた話
- なぜLaravelでfetchを使うと419エラーが発生するのか?
- Laravel + shadcn/ui ページネーション
- LaravelプロジェクトからPostgreSQLを操作する
- LaravelでInertia.js + shadcn/uiフォームを実装する
- LaravelとReactプロジェクトのセットアップ
- LaravelプロジェクトにBootstrapをインストールする