bt 16 能解决菜单不全问题,因其会重建 Python 虚拟环境、重拉插件元数据、强制刷新 softList.json 和 plugin_list.json,确保 panel 进程正常加载插件模块且索引文件结构完整。

面板菜单显示不全,大概率不是前端加载失败,而是后台 Python 环境损坏或 softList.json 缓存未重建 —— 直接点右上角“修复”按钮基本无效,必须用 bt 16 强制重置运行环境。
为什么 bt 16 能解决菜单不全问题
菜单项(如“网站”“数据库”“文件”)的可见性依赖两个关键环节:panel 进程正常加载插件模块,以及 /www/server/panel/data/softList.json 文件存在且结构完整。当面板更新中断、pyenv 损毁或网络异常导致索引下载失败时,这两个条件都会失效。bt 16 不只是重启服务,它会:重建 Python 虚拟环境、重新拉取插件元数据、强制刷新 softList.json 和 plugin_list.json,但不会覆盖你已安装的站点或数据库配置。
常见错误现象包括:
- 点击“网站”后空白或报 500 错误
- 左侧菜单只显示“首页”“监控”“安全”,其余全部消失
- 执行
curl -sS https://api.bt.cn/api/softlist | head -n 1返回空或{"code":500}
执行 bt 16 前必须确认的三件事
跳过检查直接运行,容易卡住或报错。
- 确保服务器能访问
api.bt.cn:执行curl -sS https://api.bt.cn/api/softlist | head -n 1,看到{"code":200才继续 - 确认当前版本低于 v9.0.0?执行
bt回车,看首行输出;若为 v7.9.0 或 v8.2.2,bt 16是必要步骤,不是可选项 - 检查
/www/server/panel/pyenv是否存在:执行ls /www/server/panel/pyenv;若提示 “No such file”,说明环境已损毁,需先备份再执行bt 16
bt 16 执行失败时的补救路径
如果终端输出 ModuleNotFoundError: No module named 'panelSite' 或卡在 “Downloading pyenv…”,说明证书校验或 pyenv 本身已不可恢复。
- 先备份旧环境:
mv /www/server/panel/pyenv /www/backup/pyenv_backup - 换阿里云镜像源重试:
curl -k https://mirrors.aliyun.com/bt/install/update6.sh | bash - 脚本成功后,**必须立刻再执行一次**
bt 16,否则插件索引仍为空 - 最后补一刀:
bt 19(重载软件管理模块) +bt 30(刷新插件索引),避免部分插件图标不显示
菜单恢复后仍不显示某些子项?检查 PHP 编码层冲突
极少数情况,菜单项“存在但点击无响应”或接口返回乱码,实际是 PHP 版本升级引发的底层编码问题,和面板主程序无关。
- 执行
ls /www/server/php/查看已安装版本(如74、80) - 切换默认 PHP:
rm -f /www/server/php/default && ln -sf /www/server/php/74 /www/server/php/default - 重启服务:
systemctl restart php-fpm-74 && nginx -t && systemctl reload nginx - 再访问
/api/system/get_status,确认响应头含Content-Type: application/json; charset=utf-8
真正麻烦的不是命令敲不对,而是把“菜单不全”当成前端问题去清缓存、换浏览器——根源往往在 /www/server/panel/pyenv 目录是否真实可用,以及 softList.json 是否被正确写入。别跳步,先验证网络和环境,再动 bt 16。











