MinEMemO

【インフラ】Dockerで生成したLaravel環境でログパーミッションエラー + 権限系の整理のメモ

📝 更新日:2026-06-13 / 📄 作成日:2026-06-13
Hero Image
目次

はじめに

インフラはローカル環境をDockerなどで構築はできますが、詳しくないので、完全個人用のメモです。
間違った情報もあるとおもうので、参考にする際はご注意ください。

Laravelでログの書き込み権限でパーミッションエラーがでたのでこれを気に権限周りの整理。
また修正方法も記載しておきます。

今回のエラー原因

Laravel実行ユーザー

www-data

storage所有者

1000(tm)

だったため、

www-data が storage/logs/laravel.log に書き込めず、Permission denied が発生していました。

登場人物

Ubuntuユーザー

DockerでLaravel環境を作成したUbuntuのユーザー。
Ubuntu環境で id と打つと情報の確認ができます。

今回の場合の例


tm@pc240127:~/Laravel13_sample$ id
uid=1000(tm) gid=1000(tm) groups=1000(tm),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),100(users),1001(docker)

※Ubuntu環境

uid 1000 が Laravel のフォルダの所有者に最初はなっていました。

Laravelに書き込むユーザー

PHP-FPMのユーザー www-data
このユーザーが log フォルダなどに書き込めるようにパーミッションを調整しないといけない。

Docker内で以下のコマンドで確認ができます。


root@a3071f286021:/var/www/src# id www-data
uid=33(www-data) gid=33(www-data) groups=33(www-data)

※Dockerコンテナ内

Docker内の自分自身のユーザー

自分自身を調べると www-data ではなく、今回は root になっていました。
ログはLaravelを実行しているユーザーが書き込むので、自分自身とは異なります。

名前の確認


root@a3071f286021:/var/www/src# whoami
root

※Dockerコンテナ内

ユーザー情報の確認


root@a3071f286021:/var/www/src# id
uid=0(root) gid=0(root) groups=0(root)

※Dockerコンテナ内

パーミッション調整

Laravelを実行しているPHP-FPMの実行ユーザーを確認


root@a3071f286021:/var/www/src# cat /usr/local/etc/php-fpm.d/www.conf | grep "^user"
user = www-data

※Dockerコンテナ内

Laravelを実行しているグループを確認


root@a3071f286021:/var/www/src# cat /usr/local/etc/php-fpm.d/www.conf | grep "^group"
group = www-data

※Dockerコンテナ内

Laravelが実行中に書き込むフォルダのパーミッションを確認

  • storage/:ログやアップロードされた画像、アプリデータのキャッシュなど
  • bootstrap/cache/:Laravel本体のキャッシュ

※今回はログファイルの調整だが、まとめてやっておく。

storageフォルダの権限確認


root@a3071f286021:/var/www/src# ls -ld storage
drwxr-xr-x 5 1000 1000 4096 Jun 12 01:41 storage

※Dockerコンテナ内

bootstrap/cache/フォルダの権限確認


root@a3071f286021:/var/www/src# ls -ld bootstrap/cache
drwxr-xr-x 2 1000 1000 4096 Jun 12 01:41 bootstrap/cache

※Dockerコンテナ内

logファイルの権限確認


root@a3071f286021:/var/www/src# ls -l storage/logs
total 132
-rwxr-xr-x 1 1000 1000 134758 Jun 12 01:41 laravel.log

※Dockerコンテナ内

パーミッションの変更


# Laravelを書き込むPHP-FPM実行ユーザーに所有者を変更
chown -R www-data:www-data storage bootstrap/cache

# ディレクトリ
# 所有者とグループ:r(読込)、w(書込)、x(実行)
# その他:r(読込)、x(実行)
# 775 = 所有者(rwx) グループ(rwx) その他(r-x)
find storage bootstrap/cache -type d -exec chmod 775 {} \;

# ファイル
# 所有者とグループ:r(読込)、w(書込)
# その他:r(読込)
# 664 = 所有者(rw-) グループ(rw-) その他(r--)
find storage bootstrap/cache -type f -exec chmod 664 {} \;

パーミッション変更後の確認

フォルダ権限


root@a3071f286021:/var/www/src# ls -ld storage bootstrap/cache
drwxrwxr-x 2 www-data www-data 4096 Jun 12 01:41 bootstrap/cache
drwxrwxr-x 5 www-data www-data 4096 Jun 12 01:41 storage

※Dockerコンテナ内

ログファイル権限


root@a3071f286021:/var/www/src# ls -l storage/logs
-rw-rw-r-- 1 www-data www-data 134758 Jun 12 01:41 laravel.log

※Dockerコンテナ内

パーミッションについて

おまけ

ユーザー覧確認


cat /etc/passwd

※Dockerコンテナ内

見方
root:x:0:0:root:/root:/bin/bash

ユーザー名:x:UID:GID:説明:ホームディレクトリ:ログインシェル
※「:説明:ホームディレクトリ:ログインシェルは時々見る程度」

グループ一覧の確認


cat /etc/group

※Dockerコンテナ内

見方
root:x:0: ↓
グループ名:x:GID

さいごに

業務で常にしておかないと、何でこうするのか説明ができなくなりますね。 色々エンジニアは大変。
profile_icon
taka
プログラマー
2017年11月から業務でPHPを触りだしたエンジニアです。 業務経験8年程度。 2022年から「要求整理→設計→実装→テスト→リリース」と開発のステップをきちんと経験したく、 転職を始めましたが、なかなか思う通りには・・・いっていません。 現職が自社案件枯渇、本社エリア以外のSES案件の繋がりがなしと急に発覚し、 26/05から急遽強制的に転職活動中。 現職をやめるつもりはなかったし、転職は本当に最後にしたいのでもしよければお声がけください。 参画したPJ、エンジニアとしての経験をまとめたGitHubリポジトリもあります。 https://github.com/tm-qc/project-experience