Laravelさんは、Apacheを再起動したとしても、内部のキャッシュが残っててしまって、更新したプログラムをうまく反映してくれない時がある。
キャッシュクリア系の方法をまとめた。
基本的なキャッシュクリアコマンド
APIなど、Webサービスを使っていなくてビューがないのであれば、 view:clear
はしなくてよい。
php artisan cache:clear
php artisan config:clear
php artisan route:clear
php artisan view:clear
ちょっと踏み込んだキャッシュクリアコマンド
オートローディングをしなおして、オプティマイズも実行してと、まるっとキャッシュを作り直したい場合。
composer dump-autoload
php artisan clear-compiled
php artisan optimize
php artisan config:cache
キーの作り直し
新しくキーを作り直して、完全に前のキャッシュを無効にするときとか。
php artisan key:generate
Scheduler
Schedulerのキャッシュは、前述のコマンドを持ってしても消えてくれないという、ロックな仕様。
次のようなキャッシュファイルを明示的に消す。
$ pwd
/path/to/your/laravel/storage/framework
$ ls -l schedule-*
-rw-r--r-- 1 apache apache 0 Jun 8 18:02 schedule-0d894ecd1e342cc720e1556766671673
-rw-r--r-- 1 apache apache 0 Jun 6 12:09 schedule-c4b93c084c29f9c504d4f412f1540947
$ rm -f schedule-*
Configのキャッシュ
env("YOUR_PARAMETER")
といった形で使う .env
で定義した値が読み込めなく(Nullになる)時がある。いやはやサイケデリックな仕様。
次のような感じで、該当キャッシュファイルを消す。(参考: hasen's tech life)
$ pwd
/path/to/your/laravel/bootstrap/cache
$ ls -l
-rw-rw-r-- 1 apache apache 10780 May 28 15:48 config.php
$ rm -f config.php
(追記)
5.2以降の仕様で、キャッシュがある時は、config/*.php
以外の場所で使われるenv()
は無効化(null)になる仕様になったようです。
参考: Upgrade guide - Laravel
参考: Laravel では env() を config 系ファイル以外の場所に書いてはいけない - Qiita