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のキャッシュを参照するようになります。次の順で確認してください。
php artisan config:clearを実行してキャッシュを削除する- 削除後に再度動作を確認する(多くはこれで反映される)
- それでも古い場合は
bootstrap/cache/config.phpが残っていないか確認し、あれば手動で削除する - キューワーカーやデーモンを使っている場合は、プロセスが古い設定を保持しているため
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.php・routes-v7.php・packages.php・services.php)… 起動時に読み込む先読みキャッシュ
この2つのディレクトリがWebサーバー実行ユーザー(www-dataやapacheなど)から書き込めないと、キャッシュの削除・再生成に失敗します。次のように権限と所有者を整えてください。
# 書き込み権限を付与
$ 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/dataやstorage/framework/viewsディレクトリ自体が存在しないときに出ます。Gitでは空ディレクトリが管理されないため、クローン直後やデプロイ後に起こりがちです。以下で作成してから権限を付け直します。
$ mkdir -p storage/framework/{cache/data,views,sessions}
$ chmod -R 775 storageOPcache・PHP-FPM・Webサーバー再起動が必要なケース
Artisanコマンドが正常に終わっているのにブラウザの表示だけ変わらない場合、Laravelの外側にあるキャッシュを疑います。特にPHPのOPcacheはコンパイル済みのPHPコードをメモリ上に保持するため、artisanでは消えません。次の切り分けを行ってください。
| 疑う対象 | 症状 | 対処 |
|---|---|---|
| OPcache | PHPファイルの変更が反映されない(本番で顕著) | PHP-FPMをreload、またはopcache_reset()を実行 |
| PHP-FPM | FPM経由でのみ古い挙動が残る | 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 refused | cache/session driverの接続先(Redis等)が未起動・拡張未導入 | driver設定と拡張・サービス起動を確認、またはfileに変更 |
| 設定変更が反映されない(エラー無し) | config cacheが残存 | php artisan config:clear |
| PHPの変更が反映されない(エラー無し) | OPcacheが残存 | PHP-FPM reload / opcache_reset() |
「コマンドを実行しても直らない」ときの診断フロー
ここまでの対処を、上から順に試すチェックリストとしてまとめます。1つずつ確認すれば原因の切り分けができます。
php artisan optimize:clearを実行したか …cache:clearだけでは他のキャッシュが残る- コマンドがエラーで失敗していないか … 失敗しているなら権限エラーを疑い、storage・bootstrap/cacheの権限を確認
- 正しいディレクトリ・正しい環境で実行しているか … 本番とローカルを取り違えていないか、デプロイ先で実行しているか
- config cacheが残っていないか …
.env変更が効かないならconfig:clear、またはbootstrap/cache/config.phpを削除 - OPcache・PHP-FPMを疑う … コマンドは成功するのにPHPの変更だけ反映されないならFPMをreload
- Webサーバー・CDN・ブラウザのキャッシュ … スーパーリロード、Nginx/Apache reload、CDNのパージも確認
- キューワーカー・デーモンの再起動 … 常駐プロセスは古いコードを保持するため
queue:restart
まとめ
Laravelでキャッシュクリアができない・変更が反映されないときは、まずphp artisan optimize:clearで全キャッシュを一括削除し、それでも直らなければ「権限エラー → config cache → OPcache/PHP-FPM → Webサーバー」という順で原因を切り分けます。エラーメッセージが出ている場合は上の対処表から該当する項目を探してください。
各キャッシュの仕組みや応用的な使い方は【一括クリア】Laravelキャッシュクリア – 基本から応用まで徹底解説で、コマンドだけを素早く確認したいときは[簡易版] Laravel キャッシュクリアのコマンドもあわせてご覧ください。
(最終更新:2026年7月19日)

コメントを残す