【Laravel Sail(Docker)】Failed to open stream: Permission denied(パーミッションエラー)の対処法

パーミッションエラーの対処法記事アイキャッチ プログラミング
スポンサーリンク

学習の備忘録です。タスク管理アプリを作っています。

今回は、マイグレーション作成とリフレッシュをしていた時にパーミッションエラーが発生したので、その解決策についての備忘録をまとめました。

マイグレーション作成とリフレッシュについては以下の記事にまとめています。

私の場合、Laravel Sail(Docker)を使っているのでそれ向けの記事です。

Failed to open stream: Permission deniedエラー

パーミッションエラーのエラー画面

私の場合は、マイグレーション作成を行っていた際、「Failed to open stream: Permission denied」というエラーが発生しました。ファイルの所有権がロックされているみたい?

ということでファイルの所有者を以下のコマンドで変更します。

sudo chown -R $USER:$USER .

該当プロジェクトのフォルダ内にあるすべてのファイルとフォルダの所有者を、現在のユーザーに強制的に書き換えます。

パスワードを求められるので、Ubuntuのパスワードを入力しましょう。

logファイルのパーミッションエラー

   UnexpectedValueException 

  The stream or file "/var/www/html/storage/logs/laravel.log" could not be opened in append mode: Failed to open stream: Permission denied
The exception occurred while attempting to log: file_put_contents(/var/www/html/database/migrations/2026_05_27_100754_create_stamp_histories_table.php): Failed to open stream: Permission denied
Context: {"exception":{}}

ひとつ上の所有者変更コマンドを実行した後でもなんかパーミッションエラーが出ました。

Laravelのログファイル自体への書き込み権限がガチガチにロックされてるみたい……?

ということでログを書き込んだりキャッシュを作成するフォルダに、Laravelが書き込みできるように権限を変更します。
※パスワードを求められる場合は、Ubuntuのパスワードを入力しましょう。

sudo chmod -R 775 storage bootstrap/cache
  • owner → 読み書き実行(7)
  • group → 読み書き実行(7)
  • others → 読み取り・実行(5)

パーミッションエラーが消えない場合

パーミッションエラーが消えない場合の画面

権限書き換えコマンドを試してもパーミッションエラーが消えないことがあります。私がそうでした。Ubuntu側とDocker側で権限の取り合い? をしているらしい。

Dockerコンテナ側とUbuntu側でファイル所有者が一致していない場合、パーミッションエラーが発生するそうです。

そういう時は一回完全にSail(Docker)を停止します。

./vendor/bin/sail down

そして改めて所有者を変更し、

sudo chown -R $USER:$USER .

Sailを「バックグラウンド」で再起動します。

./vendor/bin/sail up -d

その後改めてマイグレーション作成コマンドを打ったらエラーが消える……はず!

コメント

タイトルとURLをコピーしました