Laravel Artisan コマンド: optimize:clear
- カテゴリ: artisan
- 掲載バージョン: Laravel 12・PHP 8.4
- 名前空間 / FQCN / コマンド:
php artisan optimize:clear - 関連: config:clear, route:clear, cache:clear, view:clear, config:cache, route:cache
- 変更履歴: Laravel 9 以降、
optimizeが統合されoptimize:clearが導入。Laravel 12 では従来と同様に使用可能。
要点(TL;DR)
- 何に使うか: 事前にキャッシュ・コンパイルファイルを全て削除し、開発・デプロイ時にフレッシュな状態にする
- 最低限の使い方:
php artisan optimize:clear - よくある罠
- ファイル権限が不足していると削除に失敗する
config:cacheやroute:cacheを実行した後に再度実行しないと、キャッシュが残る- 共有ホスティング上で実行すると、書き込み禁止ディレクトリがあるとエラーになる
概要
optimize:clear は Laravel アプリケーションで生成されるコンパイル済みファイル(bootstrap/cache/*.php など)と、Laravel のキャッシュ(config, routes, services, packages)を全て削除します。デプロイ後にコードが反映されない、または開発中に変更が即座に反映されないときに実行します。
構文 / シグネチャ
php artisan optimize:clear
引数(表)
| 引数 | 型 | 必須 | 既定値 | 説明 |
|---|---|---|---|---|
戻り値
- コマンドはターミナルに「Optimisation cleared successfully」などを出力し、終了コード
0で終了します。
例外/副作用
- RuntimeException: ファイル削除失敗時(例: 権限エラー)
- ファイルシステムへの書き込み操作が発生するため、権限設定に注意
使用例
最小例
php artisan optimize:clear
実務例
# CI/CD パイプラインでコードデプロイ後に実行
rsync -avz ./app user@server:/var/www/html
cd /var/www/html
php artisan optimize:clear
php artisan cache:clear
php artisan route:cache
よくある落とし穴・注意
| 症状/エラー | 原因 | 対処 |
|---|---|---|
Permission denied | webサーバーユーザーが bootstrap/cache を削除できない | chmod -R 775 bootstrap/cache などで権限を調整 |
File not found | 既にファイルが存在しない | 無視しても問題ない |
| キャッシュが残る | config:cache 後に再実行しない | php artisan config:clear を併用 |
代替・関連APIとの比較
| API | 主な機能 | 選択基準 |
|---|---|---|
php artisan config:clear | config キャッシュのみ削除 | config:cache 後に再キャッシュが必要 |
php artisan route:clear | ルートキャッシュのみ削除 | ルート変更後に使用 |
php artisan cache:clear | 全体キャッシュ削除 | デバッグ時に便利 |
php artisan view:clear | ビューキャッシュ削除 | ビューテンプレート変更時に実行 |
php artisan optimize | キャッシュを再生成 | 本番環境で一括最適化時に使用 |
optimize:clear はこれらを一括でクリアするので、デプロイや大規模変更後に最も手軽。
テスト例(Pest)
it('clears optimization files', function () {
// まずファイルを作成しておく
file_put_contents(base_path('bootstrap/cache/example.php'), '<?php return [];');
// コマンド実行
Artisan::call('optimize:clear');
expect(file_exists(base_path('bootstrap/cache/example.php')))->toBeFalse();
});

