更新日志
版本发布逐版本列出变更说明,站点公告按置顶与时间倒序排列,共 93 条记录;升级前请先阅读对应版本的变更说明与升级步骤。
-
v0.3.94
巡检日报:文件 + 邮件 + 定时
随交付包发布性质:运维能力补齐。为多站点巡检加 -Report 开关:一键生成日报文件并可邮件发送、可注册为每日定时任务。
查看完整变更
性质:运维能力补齐。为多站点巡检加
-Report开关:一键生成日报文件并可邮件发送、可注册为每日定时任务。 无表结构变更、无依赖变更、业务 PHP 与 v0.3.93 逐字节相同。类别 变更 升级动作 新增开关 qdcms-deploy.ps1增加-Report:生成qdcms-report-<时间戳>.txt(UTF-8 带 BOM)与同名.csv(Site/Step/Status/Detail 明细),内容含生成时间/主机/模式、站点数与 PASS/WARN/FAIL 统计、结论、按站点分组的逐步结果(含自检非 OK 项)、需处理问题清单;并在控制台打印可复制的schtasks每日定时命令无(可选使用) 邮件日报 -ReportTo "a@x.com,b@y.com"直接发送日报,复用站点后台的 SMTP 配置(调用站点自身includes/Mailer.php的SmtpMailer,无需另填凭据);未配置 SMTP 时仍生成文件,邮件项标记 WARN 并给出配置路径。-ReportDir/-ReportTitle/-MailSite可选无 退出码 无 FAIL → 0,存在 FAIL → 1(计划任务/CI 可据此告警) 无 文档同步 docs/Windows部署说明.md新增 8.3「一键巡检日报」(用法、内容说明、schtasks 定时命令、SMTP 依赖);docs/安装配置说明.md安装步骤补充日报说明无 依赖 / 扩展 无 无 自检 线上实测: -Discover -Report生成 TXT(450+ 字节)与 CSV,内容正确含自检非 OK 项;-ReportTo未配置 SMTP 的站点时邮件项正确降级为 WARN 并输出"站点未配置 SMTP(后台 → 系统设置 → 邮件 SMTP 配置)";退出码 0。php -n -l181/181;6 个.ps1通过 PowerShell 5.1 解析无 -
v0.3.93
多站点批量部署 / 巡检
随交付包发布性质:交付能力补齐。新增 qdcms-deploy.ps1,支持在同一台服务器上批量部署新站点与巡检已有站点。
查看完整变更
性质:交付能力补齐。新增
qdcms-deploy.ps1,支持在同一台服务器上批量部署新站点与巡检已有站点。 无表结构变更、无依赖变更、业务 PHP 与 v0.3.92 逐字节相同。类别 变更 升级动作 新增脚本 qdcms-deploy.ps1:Verify(默认,只读巡检) 扫描宝塔 vhost 自动发现 QDCMS 站点,逐个输出目录/版本/安装状态/数据库连通(users 数)/自检结论;Deploy 新建站点:robocopy 复制程序(默认排除install/)→ 建库(utf8mb4)+ 建号(@127.0.0.1与@localhost,重跑用ALTER USER同步口令)→ 导入database.sql→ 写config/generated.php(含随机GO_API_KEY)/install.lock/data/.license_domain→ 依次应用 FFmpeg 与 Go 的 Windows 适配 → 创建站长账号(user_number=10000/role=9,回读校验口令哈希)→ 可选-CreateVhost生成内置全部 deny 规则的 nginx vhost → 每站点自检。MySQL 管理员凭据默认自动从已有站点config/generated.php读取无(可选使用;交付/运维提效) 安全约定 默认只预演,必须 -Apply写盘;目标目录已存在则拒绝部署(需-Force);从不删除文件或数据库;各站点库/用户/口令/域名/密钥完全独立;全部动作写日志,PASS/WARN/FAIL 汇总 + 退出码 0/1无 新增示例 sites.example.json(站点清单模板:name/domain/db_name/db_user/db_pass)无 文档同步 docs/Windows部署说明.md新增第八节「多站点部署 / 批量巡检」(用法、逐步说明表、安全约定、与宝塔面板的关系);第二节脚本清单补全;docs/安装配置说明.md安装步骤增加多站点指引;docs/打包说明.md关键文件清单加入两个新文件无 依赖 / 扩展 无 无 自检 实测(本机 Windows + 宝塔 + MySQL 8.0.29):巡检自动发现 1 个 CMS 站点并正确跳过宝塔全局 include,5 项全 PASS、退出码 0;部署一个全新站点 8 项 PASS(复制/建库/导入/配置/FFmpeg 适配/Go 适配/管理员/自检),并用 php -S+ 授权域名 Host 头端到端访问新站点:首页 200、库内 50 张表、站长账号role=9/user_number=10000、口令哈希校验通过;随后已完整清理该测试站点(删库/删用户/删目录),线上站点复检仍为 PASS。php -n -l181/181;6 个.ps1通过 PowerShell 5.1 解析无 -
v0.3.92
自检脚本:CLI 语境受限项加提示
随交付包发布性质:工具易用性修复。自检脚本以 PHP CLI 运行「部署检测」注册表,导致「视频加载加速器」「Web 服务器」
查看完整变更
性质:工具易用性修复。自检脚本以 PHP CLI 运行「部署检测」注册表,导致「视频加载加速器」「Web 服务器」 两项缺少 Web 语境而显示 INFO,客户可能误以为 nginx 加速器未生效。本版为这两项加显式提示。 无功能变更、无表结构变更、无依赖变更,业务 PHP 与 v0.3.91 逐字节相同。
类别 变更 升级动作 工具修复 qdcms-selfcheck.ps1在输出「加速器 / Web 服务器」等依赖 Web 语境的非 OK 项时追加提示:【提示】自检以 PHP CLI 运行,此项的 Web 语境探测受限,请以后台「部署检测」页为准覆盖升级即可(旧包脚本无此提示,结论不受影响) 文档同步 docs/Windows部署说明.md第七节补充"已知语境差异"说明无 依赖 / 扩展 无 无 自检 线上运行自检:提示按预期出现,其余项与 v0.3.91 一致(PASS=25 / WARN=2 / INFO=3,退出码 0); php -n -l181/181;5 个.ps1通过 PS 5.1 解析无 -
v0.3.91
部署后自检脚本 + Windows 文档补两个新坑
随交付包发布性质:交付能力补齐。新增一键自检脚本(客户签收自证工具),并把 Windows 实测新发现的两个坑
查看完整变更
性质:交付能力补齐。新增一键自检脚本(客户签收自证工具),并把 Windows 实测新发现的两个坑 (nginx 拒绝规则的位置、
nginx -s reload在 Windows 的失败)写入文档。无表结构变更、无依赖变更、无 PHP 业务逻辑变更。类别 变更 升级动作 新增自检脚本 新增 qdcms-selfcheck.ps1(只读):站点/版本/安装状态 → 复用后台「部署检测」注册表(列出全部非 OK 项与修复建议)→ Agent+ 服务(/health、心跳 state/pid/新鲜度、进程、计划任务是否注册且无 72 小时上限)→ 前台可用性(首页/短视频/登录页/静态资源,403 会提示授权域名不匹配)→ 安全规则(敏感路径必须 404,并 enumerate 站点内实际存在的*.bak-*备份逐个探测)→ PASS/WARN/FAIL 汇总 + 退出码 0/1 + 可选-LogPath/-Json。支持-SiteRoot/-BaseUrl/-HostHeader/-SkipHttp无(交付前建议运行一次) 重要修复指引 nginx 拒绝规则必须位于 PHP location 之前:否则 admin/xxx.php.bak-<时间戳>这类备份会被location ~ \.php(.*)$先命中并交给 PHP 处理器执行(实测返回 302)。宝塔环境应放在nginx/conf/proxy/<站点>/*.conf(include 顺序 proxy → php → rewrite)。自检脚本已把该场景纳入检查项已有站点按 docs/Windows部署说明.md第 8 条自查(本站已修复)文档同步 docs/Windows部署说明.md:坑位由 7 条增至 8 条(新增"拒绝规则位置 +nginx -s reload失败"),并新增「七、部署后一键自检」章节;docs/安装配置说明.md安装步骤增加"交付前自检";docs/打包说明.md关键文件清单加入自检脚本;nginx.conf.example在拒绝规则处加顺序警示注释(原样例顺序本就正确)无 依赖 / 扩展 无新增 PHP 扩展、无表结构变更( database.sql与 v0.3.90 逐字节相同)无 自检 qdcms-selfcheck.ps1在真实线上站点运行:23 PASS / 2 WARN / 4 INFO,并成功抓出admin/server-status.php.bak-*返回 302(即上述 PHP 处理器执行备份的问题);php -n -l181/181;5 个.ps1均通过 PowerShell 5.1 解析无 -
v0.3.90
Windows 适配并入交付包:FFmpeg 补丁器 + Windows 部署文档 + nginx 样例强化
随交付包发布性质:交付能力补齐。此前 FFmpeg 的 Windows 支持只存在于个别线上站点的本地补丁,
查看完整变更
性质:交付能力补齐。此前 FFmpeg 的 Windows 支持只存在于个别线上站点的本地补丁, 交付包内仍是 Linux 口径(Windows 上检测项永远显示"未安装",上传后压缩也不会执行); 同时把 Windows 部署中踩过的坑固化成文档与样例。无表结构变更、无依赖变更。
类别 变更 升级动作 新增适配脚本 新增 qdcms-ffmpeg-win.ps1:改写includes/fn-upload.php(detectFfmpegPath()增加 Windows 分支 + 新增detectFfmpegPathWindows()/compressVideoAsyncWindows())、admin/server-status.php(FFmpeg 状态复用跨平台探测)、includes/SystemRequirements.php(FFmpeg 检测项 Windows 分支);可选把ffmpeg.exe/ffprobe.exe复制到C:\ffmpeg\bin(-SkipFfmpegCopy可关)。与qdcms-go-win.ps1同标准:锚点未命中即跳过、双份备份、逐补丁php -n -l失败即回滚、幂等、-DryRunWindows 站点执行一次即可(Linux 站点无需运行) 新增文档 新增 docs/Windows部署说明.md:与 Linux 的形态差异对照、两个一键脚本用法、七个实测坑(.ps1需 UTF-8 带 BOM、心跳 JSON 需无 BOM、计划任务默认 72 小时上限、SYSTEM 任务对非管理员不可见、open_basedir要求产物在站点内、nginx 必须自补拒绝规则、Defender 误报.htaccess)、部署后验证清单、编译/启动/自启步骤、任务设置修正命令、停止与回滚无 文档同步 go-service/README.md第六节补充"72 小时上限"与"SYSTEM 任务可见性"两个坑及修正命令;docs/安装配置说明.md第六节增加 Windows/FFmpeg 指引无 样例强化 nginx.conf.example补齐安全规则:新增^~ /docs/拒绝、扩展名黑名单加入bak/orig/last/exe/dll/go/mod/sum/ps1/py/sh/bat/ini/pid并覆盖.log.1之类轮转后缀、新增\.bak[-._]规则、隐藏文件规则改为/\.(?!well-known)以保留 ACME。实测未配置时/data/.pool_key、/data/number_pool_*.dat、/docs/*.md均可被公网直接下载已有站点建议按样例补齐并重载 nginx 打包自检 docs/打包说明.md关键文件清单加入上述两个新文件无 依赖 / 扩展 无新增 PHP 扩展、无表结构变更( database.sql与 v0.3.89 逐字节相同)。Windows 侧需自行准备ffmpeg.exe(如winget install Gyan.FFmpeg)无 自检 把 qdcms-ffmpeg-win.ps1作用于交付包副本,三个被改文件与"线上已适配站点"逐字节一致;故障注入(破坏第 3 条补丁)→ 仅该补丁回滚、前两条存活、php -l通过、退出码 1、无.last残留;php -n -l181/181;三个.ps1通过 PowerShell 5.1 解析无 -
v0.3.89
复核收尾:补丁"已应用"提示与中间备份清理顺序
随交付包发布性质:质量修复。v0.3.88 经独立复核 8/8 全部通过,另报出 2 处仅影响提示与健壮性的小问题,本版修复。
查看完整变更
性质:质量修复。v0.3.88 经独立复核 8/8 全部通过,另报出 2 处仅影响提示与健壮性的小问题,本版修复。 无功能变更、无表结构变更、无依赖变更(
SystemRequirements.php与 v0.3.88 逐字节相同)。类别 变更 升级动作 提示修正 心跳 state 判定、心跳 state 归一化与 pid 校验两条补丁的-DoneMarker写法有误(其一在双引号串内嵌了单引号导致永不匹配;其二指向已被后续补丁改写的旧文本),二次运行时会把"已应用"误报为锚点未命中(版本不符?)。改用不含引号的公共子串strtolower(trim((string)(,现正确显示"已打过补丁,跳过"覆盖升级即可 顺序修正 补丁脚本的 .last中间备份清理原先写在exit 1之后,失败运行会跳过清理(残留文件不影响功能,但被强杀时可能留下)。改为先清理、再按失败情况决定退出码无 自检 故障注入 8/8 断言仍全通过;幂等性连续两次运行均 0 内容变更;二次运行 17 条补丁全部报告"已打过补丁"、无一条"锚点未命中"; includes/SystemRequirements.php与 v0.3.88 逐字节相同无 -
v0.3.88
修复补丁脚本回滚回归:备份改为双份,回滚只撤当前补丁
随交付包发布性质:回归修复。v0.3.87 为"备份保真"把逐补丁备份改成"首次写入备份一次",
查看完整变更
性质:回归修复。v0.3.87 为"备份保真"把逐补丁备份改成"首次写入备份一次", 结果失败回滚会退回到本轮原始文件而非"上一补丁之后的状态":若某补丁
php -l失败, 此前已成功的补丁被一并撤销,而汇总仍把它们列为"已修改",后续补丁再叠加到原始文本上, 会产出php -l通过但运行期致命(如Call to undefined method SystemRequirements::isWindows(), 后台「部署检测」将 500)。该问题由独立复核以故障注入复现,仅在"中途有补丁失败"的错误路径触发, 全新站点正常路径不受影响。无功能变更、无表结构变更、无依赖变更。类别 变更 升级动作 回归修复 补丁脚本改为双份备份: <file>.bak-gowin-<时间戳>= 本轮原始文件(仅首次写入生成,供用户整体回滚);<file>.bak-gowin-<时间戳>.last= 逐补丁中间态(每次写入前覆盖,仅供该次失败回滚)。失败时从.last回滚(只撤当前补丁),成功后删除.last,脚本收尾再清理残留覆盖升级即可;已用新版脚本打过补丁的站点无需特殊处理(幂等,二次运行 0 内容变更) 自检 故障注入复现(v0.3.85 树上把第 4 个补丁注入语法错误):被注入补丁已回滚、早先补丁仍在(helper 与第 2/3 补丁标记均存在)、产物 php -l通过且可正常加载调用SystemRequirements::isWindows()、原始备份 == 注入前文件、无.last残留、退出码 1 —— 8/8 断言通过无 -
v0.3.87
独立复核修复:补丁脚本失败汇总崩溃 + 心跳状态判定 + 备份保真
随交付包发布性质:质量修复。v0.3.86 经独立只读复核(zip 完整性、PHP 逻辑反射审计、补丁脚本幂等性与故障注入、
查看完整变更
性质:质量修复。v0.3.86 经独立只读复核(zip 完整性、PHP 逻辑反射审计、补丁脚本幂等性与故障注入、 心跳 BOM 往返、文档与脚本一致性)后确认 1 个真缺陷与若干健壮性问题,本版修复。 无功能变更、无表结构变更、无依赖变更。
类别 变更 升级动作 缺陷修复 qdcms-go-win.ps1失败汇总行把-ForegroundColor绑定到了ForEach-Object(实为-RemainingScripts):一旦出现失败项,脚本会以参数绑定错误中断且不列出失败清单。改为foreach内着色输出,故障注入下可正常列出并以非零码退出覆盖升级即可;已打过补丁的站点用新版脚本重跑一遍(幂等,二次运行 0 内容变更) 判定修正 includes/SystemRequirements.php的 Windows 常驻判定此前忽略心跳state:执行run-xdream-go.ps1 -Stop后最长 60 秒内仍显示"常驻运行中"。现要求state=running(兼容无 state 的旧格式心跳)且pid>0才算通过,stopped/restarting直接判警告并给出启动提示覆盖升级即可 文案修正 agent_config_readable项的修复提示改为平台自适应(Windows 不再提示"以 www 用户运行 / chmod 644")无 备份保真 补丁脚本同一轮内多个补丁共用一个时间戳, .bak-gowin-<stamp>被反复覆盖,备份退化为"最后一个补丁之前"的状态(实测 51,780 B vs 原始 46,761 B)。现改为首次写入时备份一次,保证备份=本轮开始前的原始文件<br>⚠️ 本条于 v0.3.88 修正:单份备份会使失败回滚退回过早(撤销此前已成功的补丁),已改为双份备份(原始 + 逐补丁中间态)无(仅影响回滚质量) 健壮性 go build与register-task.ps1的原生命令调用在$ErrorActionPreference='Stop'下会因 stderr 直接中断:前者用临时Continue包裹,后者改为先捕获输出与退出码再判断,使"需要管理员权限"的友好提示真正可达无 格式 修正 $bin = SystemRequirements::goBinaryPath();两处缩进(40 → 20 空格),并在补丁脚本中修掉会再次造成缩进翻倍的替换文本无 文档 go-service/README.md、docs/安装配置说明.md关于心跳 BOM 的表述与实现对齐(代码对 BOM 容错,写入端仍保持无 BOM)无 依赖 / 扩展 无新增 PHP 扩展、无 nginx/ini 变更、无表结构变更( database.sql与 v0.3.86 逐字节相同,仍 50 张表)无 自检 补丁脚本二次运行 0 内容变更;故障注入验证回滚与失败汇总; php -n -l181/181;node --check15/15;三个.ps1通过 PowerShell 5.1 解析且为 UTF-8 带 BOM无 -
v0.3.86
Agent+ Go 服务 Windows 支持:部署形态 + 检测口径 + 一键适配脚本
随交付包发布性质:平台适配版本。此前 Go 服务只有 Linux 口径(/opt/xdream-go + systemd),
查看完整变更
性质:平台适配版本。此前 Go 服务只有 Linux 口径(
/opt/xdream-go+systemd), 在 Windows(宝塔 Windows / IIS)上部署检测必然显示"不可达 / 未部署 / 无法探测", 且无法注册开机自启。本版补齐 Windows 部署形态与检测口径,无表结构变更、无依赖变更。类别 变更 升级动作 检测项平台化 includes/SystemRequirements.php的 agent 组按PHP_OS_FAMILY自动切换口径:新增isWindows()/goBinaryPath()/goHeartbeat()/goStartHint()/goRestartHint()/goLogHint();Windows 下产物路径=<站点>/go-service/x-dream-go.exe(受open_basedir限制仍可读)、常驻判定=启动器心跳文件 +schtasks计划任务探测、可执行位检查仅在 Linux 生效;所有"systemctl/journalctl/chmod +x"提示文案改为平台自适应覆盖升级即可;旧站点也可用 qdcms-go-win.ps1对SystemRequirements.php单独打补丁(幂等、带备份、php -l校验后回滚)新增部署形态 新增 go-service/run-xdream-go.ps1:Windows 启动器(守护循环 + 崩溃自愈 + 每 10s 写心跳data/.go_service_heartbeat+ 单实例互斥 + 日志轮转);自动从config/generated.php读取GO_API_KEY,保证 PHP↔Go 两侧一致无需操作(不使用 Go 服务时该文件不生效) 新增辅助脚本 新增 go-service/register-task.ps1:管理员执行一次即注册开机自启计划任务x-dream-go(SYSTEM / 开机启动)需要开机自启时以管理员身份执行 新增适配工具 站点根目录新增 qdcms-go-win.ps1:一键完成 ①检测项平台化 ②写启动器 ③生成GO_API_KEY④追加 nginx 拒绝规则(保护/go-service/与可执行文件不被下载)⑤可选编译-Build/ 启动-Start/ 注册计划任务-RegisterTask;全部改动先备份、锚点未命中即跳过、php -l失败自动回滚,-DryRun可预览按 go-service/README.md第六节执行文档同步 go-service/README.md新增「6. Windows 部署」(一键脚本、手动七步、Windows 特有要点:产物必须位于站点内、心跳为无 BOM JSON、启动器环境变量、/go-service/必须拒绝公网访问)无 交付卫生 docs/打包说明.md打包后验证清单新增上述三个 Windows 脚本必检项无 依赖 / 扩展 无新增 PHP 扩展(沿用 fsockopen/exec 探测)、无 nginx/ini 强制变更、无表结构变更( database.sql仍 50 张表)。可选:Windows 客户机需 Go 1.21+ 自行编译,或使用交付方提供的便携版工具链无 自检 Windows 实机验证: /health={"cache":true,"database":true,"status":"healthy"};部署检测 agent 组 9/9 通过(含 CLI 与 Web SAPI 两种口径,Web 侧open_basedir生效);PHP→Go 经GoAdapter的 HMAC 签名调用 200,错误密钥被 403 拒绝无 -
v0.3.85
交付包完整性修复:补齐 2 个默认占位资源 + 打包清理
随交付包发布性质:交付包缺陷修复。对 QDCMS-v0.3.84.zip 做完整性检测时发现"代码引用了文件、文件却不在包里",
查看完整变更
性质:交付包缺陷修复。对
QDCMS-v0.3.84.zip做完整性检测时发现"代码引用了文件、文件却不在包里", 本版补齐并清理,无功能变更、无表结构变更、无依赖变更。类别 变更 升级动作 补齐缺失资源 新增 assets/images/default-avatar.png(240×240 默认头像)。video-play.php与assets/js/video.js在作者无头像时引用该路径,此前文件缺失导致短视频作者头像 404 裂图覆盖升级即可,无数据变更 补齐缺失资源 新增 uploads/agent-icons/agent-default.png(256×256 默认 Agent+ 图标)。它是三处getSetting('icon_agent', ...)的默认值,v0.3.84 包因未保留uploads/默认占位资源而缺失,全新安装且未上传图标时悬浮球/聊天头像 404覆盖升级即可。注意:覆盖升级时不要删除 uploads/agent-icons/agent-default.png(它属默认占位资源,非用户上传内容,见docs/打包说明.md第一节第 3 项)打包清理 删除 4 个无任何代码引用的空目录: assets/im-plugin/ui/、assets/im-plugin/modules/{chat,contacts,conversation}/(实际模块为同级chat.js/friends.js/messages.js)无 交付卫生 admin/payment-settings.php回调基址示例由开发环境地址http://39.96.90.85改为通用占位https://your-domain.com(打包规范:开发/演示服务器地址不得进入交付包)无 文档同步 docs/安装配置说明.md:新增「官方支付模块(可选)」小节(4 张支付表需手工执行includes/payment/schema.sql、PAYMENT_KEY_DIR默认值与非默认站点目录的覆盖方法、回调与定时任务口径、退款现状);同时修正核心表数量 36 → 50无 文档同步 docs/支付系统优化与官方支付接入方案.md:增补「落地状态」说明,列明实际交付文件名与方案目标架构的差异(该文档为历史设计与审计记录)无 文档同步 docs/打包说明.md:打包后验证清单新增上述两个占位资源必检项,并在 uploads 排除规则处标注该文件必须保留无 依赖 / 扩展 无新增 PHP 扩展、无 nginx/ini 变更、无表结构变更( database.sql表清单不变,仍 50 张)无 自检 php -n -l全部 PHP 文件通过;node --check全部 JS 通过;引用解析(include/静态资源/站内链接/CSS url)无未解析项;未定义函数扫描仅getallheaders(已有function_exists兜底)无
第 8 / 10 页 · 每页 10 条 · 共 93 条
升级前请确认
备份
备份站点目录与数据库,尤其是
uploads/与config/。阅读说明
在
docs/版本升级说明.md中找到对应版本,确认是否需要执行数据库迁移。执行升级
解压覆盖站点目录 → 执行 migration → 后台「系统 → 在线更新」复核版本状态。
复核功能
检查前台首页、播放、支付与后台工作面板等关键入口是否正常。
相关入口
- 文档中心查看随包技术文档(含版本升级说明、打包说明、安装配置说明)
- 插件市场查看插件版本与兼容性
- 授权续验升级后重新查询授权状态,确认未因换机失效
- 遇到问题在线留言,附上版本号与报错信息