ThinkPHP6.0升级到6.1必须在项目根目录执行composer update topthink/framework:^6.1.0 -W,且需确保PHP≥7.2、allow_url_fopen开启、opcache.enable临时关闭,否则会卡住或报错;宝塔面板不管理框架版本,仅提供运行环境。

ThinkPHP6.0 升级到 6.1 不是面板操作,而是 Composer 项目级更新,必须在站点根目录执行 composer update,且需确认 PHP 版本 ≥ 7.2、allow_url_fopen 开启、opcache.enable 临时关闭——跳过任意一项,composer update 会卡住或报错“require topthink/framework: ^6.1.0 not found”。
为什么不能在宝塔界面点“升级”?
宝塔面板本身不管理 ThinkPHP 框架版本。它只提供 PHP 运行环境和 Web 服务,框架升级完全由 Composer 控制。你看到的“软件商店”里没有 ThinkPHP,是因为它不是服务器组件,而是你项目里的一个依赖包。
常见误操作包括:
- 在「网站设置」里切换 PHP 版本,以为这能升级 TP —— 实际只改了运行环境,不影响框架代码
- 进「文件管理」手动替换
thinkphp/目录 —— 极易漏掉vendor/composer/下的 autoload 和版本锁文件,导致类加载失败 - 用
composer create-project新建一个 6.1 项目再复制代码 ——.env、route/、app/等自定义内容容易覆盖出错
升级前必须检查的三项 PHP 配置
TP6.1 对 PHP 运行时要求比 6.0 更严格,尤其在 CLI 模式下(composer 命令就走 CLI):
立即学习“PHP免费学习笔记(深入)”;
-
allow_url_fopen必须为On:否则composer update无法拉取 packagist 包,报错 “file_get_contents(https://repo.packagist.org/packages.json): failed to open stream” -
opcache.enable建议临时设为0:OPcache 会缓存旧的composer/autoload_*.php,导致更新后仍加载 6.0 的类,表现为Class think\App does not exist -
memory_limit建议 ≥ 512M:TP6.1 的依赖解析更复杂,composer update中途可能因内存不足中断,报 “Allowed memory size exhausted”
这些配置在宝塔中修改路径为:「PHP 管理」→ 选中你当前绑定的 PHP 版本 → 「配置修改」→ 搜索关键词并修改 → 保存后点击「重载配置」(不是重启)。
执行 composer update 的正确姿势
别在 /www/server/panel 或根目录下乱跑命令。必须 cd 到你的 ThinkPHP 项目根目录(即含 composer.json 和 think 可执行文件的那层):
cd /www/wwwroot/your-site.com php /usr/bin/composer update topthink/framework:^6.1.0 -W
说明:
- 用绝对路径调用
php(如/www/server/php/82/bin/php),避免系统默认 PHP 版本过低 -
-W参数强制更新所有依赖(包括子依赖),防止因topthink/think-orm等组件版本不匹配引发运行时错误 - 升级后立即验证:运行
php think version,输出应为v6.1.x;再访问/index.php?s=/route/test(如有路由测试接口)看是否 200 - 若提示 “The requested package topthink/framework ^6.1.0 exists as ...”,说明
composer.json里"topthink/framework": "^6.0.0"没改成"^6.1.0",需先手动编辑
升级后必做的三件事
很多人更新完首页能打开就以为结束了,但 TP6.1 引入了新的异常处理机制和中间件加载顺序,后台、API、队列常在第二天才暴雷:
- 检查
config/app.php是否新增了'middleware' => []配置项 —— 若没加,部分中间件(如跨域、日志)可能不生效 - 运行
php think clear清空所有缓存,包括runtime/cache/、runtime/log/、runtime/container/ - 重点验证数据库连接:在控制器里写
dump(Db::query('select version()'));,确认不是报SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client—— 这是 MySQL 8.0+ 默认认证方式变更,需在宝塔「数据库」→「phpMyAdmin」里重置用户密码类型为mysql_native_password
真正完成升级,不是看 composer.json 里版本号变了,而是你的登录态、上传、分页、队列任务全链路都跑通了。TP6.1 的平滑性建立在你对 Composer 锁文件和 PHP 运行时细节的掌控上,而不是面板里多点几次按钮。



















