thinkphp缓存配置需同步修改.env和config/cache.php,.env中cache_driver优先级最高,若未设为redis则config/cache.php中type设置无效;修改后须清空runtime/cache目录,否则旧配置仍生效。

ThinkPHP缓存驱动配置写在config/cache.php里却没动.env文件,会导致应用始终走file驱动,哪怕你明明写了redis配置——因为.env中CACHE_DRIVER=的值优先级最高,框架启动时直接忽略config/cache.php里的type设置。
为什么改了config/cache.php却没生效
第一步:打开项目根目录下的.env文件,确认是否存在CACHE_DRIVER这一行;
第二步:如果存在,检查它的值是否为redis或memcached;【若此处仍是file或根本没这行,config/cache.php里的任何修改都不会被加载】;
第三步:删掉config/cache.php中关于'type' => 'redis'这类硬编码配置——它只在.env未定义CACHE_DRIVER时才兜底生效,但线上环境绝不该依赖这个兜底逻辑。
多级缓存配置必须同步改两处
方法一:启用redis+file回退机制
在.env中写入CACHE_DRIVER=redis;
在config/cache.php的stores数组里显式定义redis和file两个store,并确保default键指向'redis';
【缺一不可:.env控制主驱动,config/cache.php控制store细节,漏掉任意一处都会导致Cache::get()静默返回null】。
runtime/cache目录残留旧配置的后果
修改.env后必须手动清空runtime/cache/目录;
否则框架可能从旧缓存文件中反序列化出上一次加载的cache配置(比如还是file驱动),导致新配置完全不生效;
这一步不能跳过,也不能用Cache::clear()替代——它只清数据,不清已加载的配置缓存。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











