Laravel キャッシュクリアができない 場合のトラブル改善方法

by

カテゴリー:

Laravelでコードや設定を変更したのに反映されない、php artisan cache:clearを実行してもエラーが出る、あるいはコマンドは成功したのに挙動が変わらない——このページは、そうした「キャッシュクリアができない」トラブルを解決まで導くための中心記事です。

まず試すべきコマンドから、キャッシュの種類ごとの削除方法、権限エラーや本番・レンタルサーバーでの対処、エラーメッセージ別の原因までを順番に整理しています。上から順に確認していけば、多くのケースはこのページ内で解決できます。

まず試す:optimize:clear で全キャッシュを一括削除

原因の切り分けをする前に、まずは全種類のキャッシュをまとめて削除するphp artisan optimize:clearを実行してください。cache:clearはアプリケーションキャッシュ(Cacheファサードのデータ)だけを消すコマンドで、config・route・viewなど他のキャッシュは残ります。「変更が反映されない」トラブルの多くは、この残ったキャッシュが原因です。

$ php artisan optimize:clear

   INFO  Clearing cached bootstrap files.

  events ................................................. DONE
  views .................................................. DONE
  cache .................................................. DONE
  route .................................................. DONE
  config ................................................. DONE
  compiled ............................................... DONE

$

これで直れば原因は「消し忘れていたキャッシュ」です。それでも直らない場合は、この後の診断フローと個別のトラブル対処に進んでください。各キャッシュの意味や応用的な使い方は【一括クリア】Laravelキャッシュクリア – 基本から応用まで徹底解説で詳しく解説しています。

キャッシュの種類と個別のクリアコマンド一覧

「どの変更が反映されないか」でクリアすべきキャッシュは異なります。まず下の表で自分の症状に合うキャッシュを特定し、該当するコマンドを実行してください。optimize:clearはこれらをすべてまとめて実行するコマンドです。

キャッシュの種類反映されない症状の例個別コマンド
application(Cacheファサード)Cache::get()で古い値が返るphp artisan cache:clear
config(設定).envやconfigの変更が効かないphp artisan config:clear
route(ルーティング)追加・変更したルートが404になるphp artisan route:clear
view(Bladeテンプレート)Bladeの編集が画面に反映されないphp artisan view:clear
event(イベント/リスナー)リスナーの登録変更が効かないphp artisan event:clear
compiled(先読みクラス)サービスプロバイダの変更が効かないphp artisan clear-compiled

コマンドだけを手早く確認したいときは[簡易版] Laravel キャッシュクリアのコマンドも参考にしてください。

.env の変更が反映されない場合の確認手順

.envを書き換えたのに反映されない場合、ほぼ確実に設定キャッシュ(config cache)が残っていることが原因です。php artisan config:cacheを一度でも実行すると、Laravelは.envを読まずbootstrap/cache/config.phpのキャッシュを参照するようになります。次の順で確認してください。

  1. php artisan config:clearを実行してキャッシュを削除する
  2. 削除後に再度動作を確認する(多くはこれで反映される)
  3. それでも古い場合はbootstrap/cache/config.phpが残っていないか確認し、あれば手動で削除する
  4. キューワーカーやデーモンを使っている場合は、プロセスが古い設定を保持しているためphp artisan queue:restartやワーカーの再起動を行う
$ php artisan config:clear

   INFO  Configuration cache cleared successfully.

# それでも残る場合はキャッシュファイルを直接削除
$ rm -f bootstrap/cache/config.php

.envまわりのより詳しい手順はLaravel で .env を変更した場合の キャッシュクリア方法にまとめています。

権限エラー・storage/framework・bootstrap/cache の問題

コマンド実行時に「permissions」や「must be present and writable」といったエラーが出る場合は、キャッシュの保存先ディレクトリへの書き込み権限が原因です。Laravelがキャッシュを扱うのは主に次の2か所です。

  • storage/framework/cache/views/sessions/)… アプリ・ビュー・セッションのキャッシュ
  • bootstrap/cache/config.phproutes-v7.phppackages.phpservices.php)… 起動時に読み込む先読みキャッシュ

この2つのディレクトリがWebサーバー実行ユーザー(www-dataapacheなど)から書き込めないと、キャッシュの削除・再生成に失敗します。次のように権限と所有者を整えてください。

# 書き込み権限を付与
$ chmod -R 775 storage bootstrap/cache

# 所有者をWebサーバー実行ユーザーに合わせる(環境に応じて www-data を変更)
$ chown -R www-data:www-data storage bootstrap/cache

「Please provide a valid cache path.」というエラーは、storage/framework/cache/datastorage/framework/viewsディレクトリ自体が存在しないときに出ます。Gitでは空ディレクトリが管理されないため、クローン直後やデプロイ後に起こりがちです。以下で作成してから権限を付け直します。

$ mkdir -p storage/framework/{cache/data,views,sessions}
$ chmod -R 775 storage

OPcache・PHP-FPM・Webサーバー再起動が必要なケース

Artisanコマンドが正常に終わっているのにブラウザの表示だけ変わらない場合、Laravelの外側にあるキャッシュを疑います。特にPHPのOPcacheはコンパイル済みのPHPコードをメモリ上に保持するため、artisanでは消えません。次の切り分けを行ってください。

疑う対象症状対処
OPcachePHPファイルの変更が反映されない(本番で顕著)PHP-FPMをreload、またはopcache_reset()を実行
PHP-FPMFPM経由でのみ古い挙動が残るsystemctl reload php-fpm(またはphpX.X-fpm)
WebサーバーNginx/Apacheの設定・静的ファイルが古いsystemctl reload nginx / apache2
# PHP-FPM を reload すると OPcache もリセットされる
$ sudo systemctl reload php8.2-fpm

# Nginx / Apache の reload
$ sudo systemctl reload nginx
$ sudo systemctl reload apache2

エックスサーバーなどでOPcacheを扱う場合の具体的な手順はエックスサーバーの強力なキャッシュ、OPcacheを削除するを参照してください。

レンタルサーバー・本番でartisanが使えない場合の代替手順

共用レンタルサーバーでSSHが使えない、あるいは本番環境でArtisanコマンドを直接実行できないことがあります。その場合はキャッシュファイルを直接削除するか、ルート経由でクリアを実行します。

1. キャッシュファイルを手動で削除する

FTPやファイルマネージャーで次のファイル・ディレクトリの中身を削除します(ディレクトリ自体は残します)。

# 先読みキャッシュ(config/route/services/packages)
bootstrap/cache/*.php

# アプリ・ビューのキャッシュ
storage/framework/cache/data/*
storage/framework/views/*

手動削除の詳しい手順はLaravelのキャッシュクリアを手動で行う、ファイル削除で対応する方法にまとめています。

2. ルート経由でArtisanを実行する

SSHが無くてもブラウザからアクセスできる一時的なルートを用意すれば、Artisan::call()でクリアを実行できます。作業後は必ずこのルートを削除してください。

Route::get('/__clear-cache', function () {
    Artisan::call('optimize:clear');
    return Artisan::output();
});

エラーメッセージ別の原因と対処

エラーメッセージ(抜粋)主な原因対処
Failed to clear cache. Make sure you have the appropriate permissions.storage/bootstrapへの書き込み権限不足chmod -R 775 storage bootstrap/cacheと所有者調整
The /storage/framework/… directory must be present and writable.ディレクトリが存在しない/権限不足ディレクトリを作成し権限付与
Please provide a valid cache path.storage/framework/cache/dataが無いmkdir -p storage/framework/cache/data
could not find driver / Connection refusedcache/session driverの接続先(Redis等)が未起動・拡張未導入driver設定と拡張・サービス起動を確認、またはfileに変更
設定変更が反映されない(エラー無し)config cacheが残存php artisan config:clear
PHPの変更が反映されない(エラー無し)OPcacheが残存PHP-FPM reload / opcache_reset()

「コマンドを実行しても直らない」ときの診断フロー

ここまでの対処を、上から順に試すチェックリストとしてまとめます。1つずつ確認すれば原因の切り分けができます。

  1. php artisan optimize:clearを実行したかcache:clearだけでは他のキャッシュが残る
  2. コマンドがエラーで失敗していないか … 失敗しているなら権限エラーを疑い、storage・bootstrap/cacheの権限を確認
  3. 正しいディレクトリ・正しい環境で実行しているか … 本番とローカルを取り違えていないか、デプロイ先で実行しているか
  4. config cacheが残っていないか.env変更が効かないならconfig:clear、またはbootstrap/cache/config.phpを削除
  5. OPcache・PHP-FPMを疑う … コマンドは成功するのにPHPの変更だけ反映されないならFPMをreload
  6. Webサーバー・CDN・ブラウザのキャッシュ … スーパーリロード、Nginx/Apache reload、CDNのパージも確認
  7. キューワーカー・デーモンの再起動 … 常駐プロセスは古いコードを保持するためqueue:restart

まとめ

Laravelでキャッシュクリアができない・変更が反映されないときは、まずphp artisan optimize:clearで全キャッシュを一括削除し、それでも直らなければ「権限エラー → config cache → OPcache/PHP-FPM → Webサーバー」という順で原因を切り分けます。エラーメッセージが出ている場合は上の対処表から該当する項目を探してください。

各キャッシュの仕組みや応用的な使い方は【一括クリア】Laravelキャッシュクリア – 基本から応用まで徹底解説で、コマンドだけを素早く確認したいときは[簡易版] Laravel キャッシュクリアのコマンドもあわせてご覧ください。

(最終更新:2026年7月19日)

ホーム » 記事一覧 » 技術メモ » 開発 » Laravelテクニック » Laravel キャッシュクリアができない 場合のトラブル改善方法

投稿者

ここまで読んでいただき、ありがとうございます。

このサイトでは、私自身が関わっていることや、興味を持って試していることをそのまま置いています。

内容を見ていて、
「少し話を聞いてみたい」
「協業できる部分がありそう」
と感じる点があれば、下記のお問い合わせフォームからご連絡ください。状況を確認したうえで、必要な範囲でお返事します。

特に、以下のWordPressサイトに関する相談にも対応しているのでご興味ありましたらご相談ください。


Comments

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です