ホーム > Laravel > file_put_contents failed to open stream Permission deniedを解決する方法【Laravel】
Laravel

file_put_contents failed to open stream Permission deniedを解決する方法【Laravel】

いつもご利用ありがとうございます。
この記事には広告が掲載されており、その広告費によって運営しています。

Laravel でデプロイした時や Docker で環境構築するときに、file_put_contents failed to open stream Permission denied というエラーが出る場合があるので、解決方法をまとめました。

エラー文

file_put_contents(/var/www/html/laravel-docker/src/storage/framework/views/b560c9abc12f714c866236b477e2d6a6.php): Failed to open stream: Permission denied

解決方法

storage ディレクトリに対して、権限を与えることで解決

chmod -R 777 storage

解決方法の解説

システムが、storage配下のファイルに対して、読み書きする権限がないためこのエラーが発生します。

なので、storage ディレクトリに対して、権限を与えることで解決します。

chmod -R 777 storage

以上です。

もっと詳しく

storage とは?

Laravel プロジェクトをインストールした際に、以下のようなディレクトリ構成が完成したと思います。

├── app
│   ├── Console
│   ├── Exceptions
│   ├── Http
│   │   ├── Controllers
│   │   ├── Middleware
│   ├── Models
│   ├── Providers
├── bootstrap
│   ├── cache
├── config
├── database
│   ├── factories
│   ├── migrations
│   ├── seeders
├── public
│   ├── index.php
├── resources
├── routes
├── storage ←これ
│   ├── app
│   ├── framework
│   │   ├── cache
│   │   ├── sessions
│   │   ├── testing
│   │   └── views
│   ├── logs
├── tests
├── vendor
├── .env
├── .env.example
略

この中にstorageというディレクトリがあります。

このディレクトリには、例えば

  1. ログを出力
  2. 様々なデータをキャッシュデータが保存される
  3. キャッシュデータを読み込む

というような役割があり、その結果画面が表示されています。

なので、権限がないと本件のエラーになります。

ディレクトリ位置を間違えないように気を付ける

初歩的なミスとしてありがちな内容です。

さきほど説明したとおりstorageに権限を与えなければならないので、ファイルの指定の際には、相対パスに気を付ける必要があります。

chmod -R 777 相対パス

必要があれば、

cd laravel-project

にディレクトリ移動して、chmodのコマンドを打ちましょう。

以上、誰かの参考になれば幸いです。

フィードバックのお願い
この記事のフィードバックがありましたらYoutubeの適当な動画にコメントしていただいたり、お問い合わせからご連絡ください。