thinkphp6跨平台缓存同步需分环境处理:windows开发用file驱动时仅清runtime/cache等目录,linux部署用redis时须执行php think clear --all或安全删除think_cache:*前缀key,并严格校验两端cache.php配置一致。

ThinkPHP6项目在Windows开发环境写代码、Linux服务器部署时,缓存路径、驱动行为、文件权限差异导致本地清了缓存,线上仍读旧数据,或线上清缓存后本地调试异常——必须按平台特性分别处理,不能简单复制命令。
第一步:确认当前缓存驱动与配置一致性
打开 Linux 部署机上的 config/cache.php,检查 【'default' => 'redis'】 是否生效;同时对比 Windows 开发机同名配置文件,确保二者 not only 名称一致,且 stores 中 redis 连接 host、port、password 完全相同。若 Windows 用 file、Linux 用 redis,跨平台缓存根本不同源,同步清理毫无意义。
运行 php think env:info 查看实际加载的环境配置,避免被 .env 或 config/app.php 中的 cache 配置覆盖。
Linux 服务器上彻底清空所有缓存
方法一:用 ThinkPHP 原生命令(推荐)
进入项目根目录 → 执行 php think clear --all。该命令在 TP6.1+ 中会触发 CacheInterface 和 TemplateCacheInterface,自动清理 file 驱动的 runtime/cache/、runtime/data/,同时向 Redis 发送 FLUSHDB(仅当配置为 redis 且扩展可用)。
方法二:手动清理 Redis 缓存(需谨慎)
先查前缀:redis-cli -h 127.0.0.1 -p 6379 keys "think_cache:*" → 若返回大量 key,说明前缀正确;再执行 redis-cli -h 127.0.0.1 -p 6379 --scan --pattern "think_cache:*" | xargs -r redis-cli -h 127.0.0.1 -p 6379 del。这比 FLUSHDB 安全,【不会误删其他业务如 session:xxx 或 queue:xxx 的 key】。
方法三:强制清模板缓存php think clear -t。注意:此命令只清 runtime/view/ 下由 ThinkPHP 原生模板引擎生成的缓存,若你用了 Twig 或 Blade,需额外进对应目录手动删。
Windows 开发机同步清理策略
① 若开发时也配了 redis(如用 WSL2 或 Docker),直接在 Windows 终端运行 php think clear --all,效果与 Linux 一致。
② 若开发用默认 file 驱动,则只需清 runtime/cache/ 及子目录:
– 打开资源管理器,定位到 your_project\runtime\cache\
– 全选 → Delete(不要用 Shift+Delete 彻底删除,保留回收站便于误操作恢复)
– 再清 runtime/view/(模板缓存)、runtime/route/(路由缓存)——这两项不清理,可能导致 Windows 调试时页面 404 或路由错乱。
③ 关键提醒:Windows 下不要用 rm -rf runtime/* 类命令(即使装了 Git Bash),因为部分 runtime 子目录(如 config/)含 .php 格式缓存文件,被误删后框架启动时报 Class not found 或数据库配置为空,且无法自动重建。
跨平台缓存同步验证步骤
第一步:在 Linux 上执行 php think clear --all
第二步:立即访问线上接口,观察响应头中 X-Powered-By: thinkphp 后是否带新时间戳,或返回数据是否已更新
第三步:在 Windows 本地访问同一接口(确保 hosts 指向线上服务器),确认返回内容与第二步完全一致
第四步:若不一致,立刻检查 Windows 的 .env 文件中 CACHE_DRIVER=file 是否被注释或覆盖,防止本地仍读 file 缓存而线上走 redis
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











