TP8.0路由缓存不会自动刷新,修改@Route注解或route/app.php后必须手动执行php think route:cache重建runtime/route.php,该文件无哈希校验且含绝对路径,需在目标环境以Web进程用户权限生成并确保可读。

TP8.0 路由缓存不随代码更新自动刷新
改了 @Route 注解或 route/app.php 后,请求仍走旧路由——不是框架 bug,是缓存文件没被重建。TP8.0 的路由缓存(runtime/route.php)**完全静态**,没有版本号、时间戳或内容哈希校验机制,只要文件存在且可读,就直接加载,不管源码是否变更。
- CI/CD 中常见错误:在构建阶段执行
php think route:cache,但生成的runtime/route.php被打包进镜像,上线后挂载的runtime/是空目录或只读卷,导致 Web 进程根本读不到该文件,静默 fallback 到慢解析 - 多服务器部署时,若用同一份缓存文件分发,不同机器上
__DIR__解析路径不同,会导致控制器类加载失败(尤其 Linux 大小写敏感场景) -
php think optimize不适合 CI/CD 自动化:它不校验runtime/权限,也不检查 Web 进程能否读取生成的文件,失败无提示
配置缓存 runtime/config.php 为何“看起来更新了却没生效”
你删了 runtime/config.php、重跑了 php think config:cache,但 config('app.app_name') 还是旧值——大概率是 PHP OpCache 把刚写入的 config.php 编译缓存锁死了,框架 require 的其实是 OpCache 里的旧 bytecode。
开箱即用的技能链路由引擎。13 条预定义链覆盖搜索、开发、审查、MLOps、法律、创意等场景,三层路由架构(触发词→SAD反馈→DAG编排),recall@10=96.97%。配置驱动(chains.yaml),零代码扩展。pip install skill-weave-chains 一键安装。
- 必须按顺序操作:先确认
config/app.php中'app_debug' => false已生效 → 执行php think config:cache→ 再手动触发 OpCache 清理(如opcache_reset()或重启 php-fpm) - 注意 CLI 和 Web 使用的 PHP 配置可能不同:
php -i | grep opcache查 CLI 的 OpCache 状态,phpinfo()页面查 Web 的,二者需同时清理 -
config:cache命令不会覆盖损坏的runtime/config.php:如果文件存在但语法错误(比如含 PHP 8.2 特性而当前 PHP 是 8.1),命令会静默跳过重写
CI/CD 流水线里怎么安全重建缓存
不能依赖“一次生成、到处复用”,TP8.0 缓存文件含绝对路径、主机名、扩展状态等运行时上下文,必须在目标环境现场生成。
- 部署脚本中,应在 Web 进程用户(如
www-data)身份下执行:sudo -u www-data php think route:cache和sudo -u www-data php think config:cache - 确保
runtime/目录属主和权限正确:chown -R www-data:www-data runtime/ && chmod -R 755 runtime/,否则命令看似成功,实际文件属主是 root,Web 进程无法读取 - 加一道验证:部署后 curl 一个已知路由,再检查日志里有没有
[info] Route cache loaded from runtime/route.php;没有就说明 fallback 了
为什么注解路由缓存总失败
@Route 在 TP8.0 里不是“写了就能扫到”,扫描过程对路径、命名空间、文件位置极其苛刻,缓存阶段漏掉规则,运行时就根本不存在那条路由。
- 控制器类必须严格落在
app/controller/下,且命名空间与目录结构完全匹配(app\controller\User→app/controller/User.php),Linux 下User.php写成user.php就扫不到 -
php think route:cache默认不读route/annotation.php的自定义扫描路径,必须显式加参数:php think route:cache --annotation - PHP 8 Attributes(如
#[Route('user')])在 TP8.0.x 中**不支持缓存**,会被 route:cache 完全忽略,必须降级为 PHPDoc 注解格式


















