Edited at

Laravel キャッシュクリア系コマンドなど

More than 1 year has passed since last update.

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