宝塔双11:分享抽 iPad 等好礼,100% 中奖!查看活动
当前位置:论坛首页 > Linux面板 > 讨论

关于宝塔PHP最新版本刷不出来

发表在 Linux面板2026-10-23 11:55 [复制链接] 1 412

为了能快速了解并处理您的问题,请提供以下基础信息:
面板、插件版本:13.1.0

系统版本:debian

问题描述:
原因找到了,不是官方没发,也不是你的网络,是宝塔前端的一个版本号比较 Bug。


证据链
1)云端列表说得很清楚

{"name":"php-8.5", "version":"8.5.6", "versions":[{"m_version":"8.5","version":"12"}]}



version 是你装的(8.5.6),versions[0].version 是云端最新(12 → 8.5.12)。

2)面板后端返回给浏览器的数据(我在你机器上直接调用面板类复现的)

ITEM: {"name":"php-8.5","version":"8.5.6",       "versions":[{"m_version":"8.5","version":"12"}],       "update":null}



后端把两个正确的版本号都给了,update 是 null,说明"有没有更新"是前端自己算的。

3)前端判断"有没有更新"的代码

文件:/www/server/panel/BTPanel/static/js/btpanel-panel-business-services-lib.js

else {                                  // 只有 1 个版本号的软件走这个分支  let t = e.versions[0];  let r = `${t.m_version}.${t.version}`;        // "8.5.12"  if (e.version !== r && n === e.is_beta && e.version < r) return true;}



注意最后那句 e.version < r 是字符串比较,不是版本号比较。

4)字符串比较的实际结果

"8.5.6"  < "8.5.12"  →  false"8.5.7"  < "8.5.12"  →  false"8.5.9"  < "8.5.12"  →  false



逐字符比到第三段时 '6' 大于 '1',所以面板认为 8.5.6 比 8.5.12 更新,更新按钮永远不出现。

对比一下:PHP 8.4 走的是同一个函数,但 "8.4.22" < "8.4.27" 成立,所以 8.4 的更新提示是正常的。这就是为什么只有 8.5 出问题。



具体是从哪一天开始的
从 8.5.10 发布那天起。凡是 8.5.0~8.5.9 的用户,都看不到 8.5.10 之后的任何更新。论坛那位说"停在 8.5.7",完全对得上——他可能 8.5.7→8.5.8/8.5.9 是能看到的,8.5.10 之后就被这个 Bug 吃掉了。

怎么处理(按推荐顺序)
方案 A:等官方修(最稳) 把这段代码位置反馈给宝塔即可:Ft 函数里"单版本分支"应该用同文件已有的数值比较函数 b()/x(),而不是 e.version < r。8.4 分支用的就是数值比较。

相关截图(日志、错误):

使用道具 举报 只看该作者 回复
发表于 2026-10-23 13:16:12 | 显示全部楼层
同样的问题。
使用道具 举报 回复 支持 反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

紧急运维服务

响应时间:3分钟

问题处理方式:宝塔专家1对1服务

工作时间:工作日:9:00 - 18:30

宝塔专业团队为您解决服务器疑难问题

点击联系技术分析

工作时间:09:00至18:30

快速回复 返回顶部 返回列表