直接执行composer update topthink/framework可升级小版本,但需清除runtime/、Composer缓存及vendor,并切官方源确保同步8.0.3,再用php think version验证实际加载版本。

直接执行 composer update topthink/framework 即可完成小版本升级,但必须配合清除缓存与验证源配置,否则大概率卡在旧版本。
为什么 composer update topthink/framework 有时不生效
TP8.0.3 是修正版(非主版本),Composer 默认启用“最小稳定”策略,若本地 composer.json 中 "topthink/framework" 的版本约束写死为 "^8.0.0" 或 "8.0.*",它就不会主动升到 8.0.3——因为 8.0.3 被视为补丁更新,需显式触发或放宽约束。
- 检查当前约束:
grep -A2 "topthink/framework" composer.json - 临时放宽(推荐):
composer require topthink/framework:^8.0.3 --update-with-dependencies - 更稳妥的做法是先删
composer.lock,再跑composer update topthink/framework
升级前必须清理的三个缓存点
TP8 对 PSR 自动加载和容器扫描极度敏感,残留缓存会导致版本号显示仍为旧值、类找不到、中间件不执行等静默故障。
修复 Core bailout 状态损坏安全问题,以及 BZ2、DOM、PDO、Opcache/JIT 内存与执行错误,改进 Unicode 字素处理、URL 解析、TLS 流状态、信号分发及会话错误处理。
- 删运行时缓存:
rm -rf runtime/ - 删 Composer 缓存:
composer clear-cache - 删 vendor 并重装(最彻底):
rm -rf vendor/ && composer install
国内源导致升不到 8.0.3 的真实原因
阿里云、腾讯云等镜像源同步有延迟,TP 官方 8.0.3 发布后,国内镜像可能数小时甚至一两天未同步。你执行 composer update 看似成功,其实拉的是镜像里最后缓存的 8.0.2。
立即学习“PHP免费学习笔记(深入)”;
- 查当前源:
composer config -g repos.packagist - 切回官方源(临时):
composer config -g repos.packagist https://repo.packagist.org - 升级完建议切回国内源:
composer config -g repos.packagist https://mirrors.aliyun.com/composer/
升级后务必用 php think version 验证,别只看 composer show topthink/framework ——后者可能显示本地锁文件记录,而非实际加载版本。TP8 的版本号由框架启动时读取 thinkphp/library/think/App.php 中的常量决定,runtime 缓存不清理,这个值就永远不变。


















