PbootCMS V3.2.22 版本更新公告
发布日期:2026-08-18 | 版本号:V3.2.22 | 类型:环境要求调整 + 新增功能 + 安全加固 + 问题修复
各位站长、开发者朋友们大家好:
PbootCMS V3.2.22 版本已正式发布。本次更新调整了新安装及全包升级的最低 PHP 版本要求,新增 SVG、SVGZ、AVIF 图片上传支持并配套上传目录安全规则,对 Imagick 处理链路进行安全硬化,同时修复多语言切换后跨语言错读模板缓存、后台多图上传第二批起卡住及在线升级版本号比较越界等问题。本次涉及运行环境要求变更(适用于新安装及全包升级),采用全包升级的站点请先确认 PHP 环境,并重点关注图片上传、水印输出与多语言页面。
自本版本起,新安装及全包升级要求 PHP 版本不低于 7.4,推荐 8.4,已支持至 8.5;使用后台在线升级的存量站点不受此门槛影响,仍可继续运行于原有 PHP 版本。
前台、后台与 API 入口新增最低版本校验,PHP 低于 7.4 时会直接终止运行并提示您服务器PHP的版本太低,程序要求PHP版本不小于7.4(API 接口返回对应英文提示),该校验为阻断式,不是仅告警。
后台首页系统信息及 后台 → 系统管理 → 服务器信息 的 PHP 版本一行,在低于 7.4 时会显示建议升级到 7.4+橙色标记,仅作提醒,不做任何拦截,便于存量站点自行安排环境升级。
完善内核版本无关写法,修复由空值计数、直读 superglobal、数组下标越界等旧写法引发的、自 PHP 8 起会升级为致命错误的兼容问题,消除相应告警,全区间兼容 PHP 7.0 至 8.5;路由与分发行为保持不变。
| 序号 | 模块 | 更新说明 |
| 1 | 上传放行 | 上传格式白名单新增 svg、svgz、avif;后台上传、UEditor 编辑器上传及编辑器远程图片抓取同步放行,无需另行配置。 |
| 2 | SVG 强制净化 | SVG 与 SVGZ 上传均强制净化且不可关闭:剔除 script、foreignObject、iframe、object、embed、form、style、animate 等危险元素,清除全部 on* 事件属性,拦截 javascript:、vbscript:、data: 协议,移除不安全的 href、src、xlink:href 外链引用,过滤 style 属性中的 expression() 与外部 url(),并拒绝含 <!DOCTYPE>、<!ENTITY> 声明的文件(防外部实体注入);净化失败即拒绝上传并删除临时文件。 |
| 3 | SVGZ 解压限制 | SVGZ 源文件与解压后体积均限制为 2MB,压缩比上限 100 倍,防范压缩炸弹;超限或解压失败将拒绝上传,并提示 SVGZ文件过大!、SVGZ解压后过大!、SVGZ压缩比过高!、SVGZ解压失败!。 |
| 4 | AVIF 缩放处理 | AVIF 缩略按当前环境后端能力择优:GD 支持时优先由 GD 处理,否则交由具备 AVIF 能力的 Imagick 接管;由 Imagick 接管时会跳过水印并提示当前环境 AVIF 由 Imagick 处理,已跳过水印;两个后端均不支持 AVIF 时拒绝上传并提示当前环境不支持 AVIF 图片处理!。 |
| 5 | 上传目录安全规则 | 新增上传目录规则,输出正确的 Content-Type 与 X-Content-Type-Options: nosniff,并禁止上传目录内 php、phar、cgi、asp、jsp 等脚本执行。Apache 由程序自动部署为 static/upload/.htaccess(首次上传、开启伪静态、在线升级成功后自动补齐);Nginx 不读取 .htaccess,须手动将 rewrite/static-upload.nginx.conf 并入站点配置。 |
【安全】新增危险 coder 门禁,禁用 MSVG、MVG、MSL、URL、HTTP、HTTPS、FTP、PS、EPS、PDF、EPHEMERAL、LABEL、CAPTION、CLIPBOARD、TEXT、SVG、SVGZ 等易被用于命令执行与 SSRF 的解码器,并关闭 svg:xml-parse-huge、pdf:use-cropbox、ps:use-trimbox、mvg:vector-graphics 等风险选项。
【安全】新增输入格式白名单,仅允许 AVIF、HEIC、HEIF、GIF、JPEG、JPG、PNG、WebP 进入 Imagick 处理链路,白名单之外的格式一律不交由 Imagick 解析。
【安全】新增资源上限:内存与映射取 256MB 与 PHP memory_limit 四分之一中的较小值(下限 32MB),磁盘 512MB,处理时长 120 秒,像素面积 64M,单边宽高 8192,避免超大图片或解压炸弹拖垮服务器。
修复合法图片被误判拒绝的问题:AVIF、HEIC、HEIF 不再仅依赖 getimagesize() 判定,改为结合扩展名与文件头特征校验,正常图片可正常上传,而格式与扩展名不匹配或命中危险解码器的文件仍会被拒绝。
新增图像处理后端配置项,路径:后台 → 全局配置 → 配置参数 → 图片水印。可选自动(AVIF 按能力择优,其余走 GD)、仅GD(逃生阀)、优先Imagick(AVIF 可用时接管,其余仍走 GD),默认为自动;JPEG、PNG 等常规格式的处理路径不变,仍走 GD。
修复后台首页每次加载都触发 Imagick 深度探测导致额外开销的问题:探测结果改为持久化缓存,仅在 ImageMagick 版本变化时失效;如需手动重检,可在 后台 → 系统管理 → 服务器信息 的Imagick 深度检测一行点击重新检测(仅探测 file 类 coder,不发起网络请求)。同页新增图像后端配置、Imagick policy 状态与图像能力矩阵展示,便于排查环境支持情况。
修复多语言站点切换语言后主题绑定滞后的问题:此前语言已切换而主题仍停留在切换前的绑定,导致列表页、内容页、单页可能错读另一语言的模板编译结果与 HTML 缓存,出现语言与页面不一致;现改为在渲染前按最终语言统一绑定主题,PC 端与手机端一致处理。
修复后台内容、单页表单中多图上传第二批起卡住的问题:此前首批多选上传正常,第二次及以后再选文件时上传遮罩不结束、图片字段不写入值,保存后等同于未上传(第二批即便只选 1 张也会触发);现改为自管批次计数,在批次全部结束时统一收尾。
修复在线升级版本号比较越界的问题:服务端与本地版本号段数不一致时会读取不存在的版本段,产生 PHP 告警并可能误判升级脚本的适用性。
本次更新调整了运行环境最低要求,并新增矢量与新格式图片上传及 Imagick 安全硬化。请先确认 PHP 环境满足要求再执行升级;升级前请务必备份网站文件、数据库及自定义模板,升级完成后请清理系统缓存,并重点核验多语言页面、图片上传与水印输出是否正常。
兼容性提示
PHP 版本 — 新安装及全包升级要求 PHP 不低于 7.4;使用后台在线升级的存量站点不受影响。若站点当前运行于 PHP 7.0 至 7.3 且计划采用全包升级,请先完成 PHP 环境升级,否则升级后将无法访问。
Nginx 环境 — 须手动将 rewrite/static-upload.nginx.conf 并入站点配置,否则 /static/upload/ 下的 SVG、SVGZ、AVIF 可能返回错误的 Content-Type,其中 .svgz 缺少 Content-Encoding: gzip 时浏览器会把压缩字节当 XML 解析而无法显示。
Apache 环境 — 自动部署依赖目录级 AllowOverride 并启用 mod_mime、mod_headers,请确认站点已开启,否则 MIME 与 nosniff 规则不会生效。
SVG 素材 — 净化为强制行为且会改写文件内容,依赖内嵌脚本、事件属性、外链引用或动画标签实现效果的 SVG 素材,上传后相应能力将被移除,请提前评估后再替换站内素材。
多语言站点 — 主题绑定修复后,缓存键仍为 URL + 语言 + 终端,历史错误缓存不会自动失效,升级后请清理系统缓存(HTML 缓存及模板编译缓存),再核验各语言页面输出。
AVIF 与水印 — 开启了图片水印且需要上传 AVIF 的站点请注意:当 AVIF 由 Imagick 接管处理时会跳过水印;若环境两端均不支持 AVIF,上传将被拒绝而非静默降级。
方式一:后台在线升级(推荐) — 支持跨版本升级,系统将自动完成代码及必要配置的升级,操作路径:后台 → 系统 → 在线升级。
方式二:全包升级 — 下载最新版本源码包,保留 config、data、static、template 目录,其余文件用新版全部替换;如中间跨越了含数据库变更的版本,请对照相应版本的 SQL 升级脚本手动执行。采用此方式时请先确认 PHP 版本不低于 7.4。
如升级过程中遇到问题,欢迎前往官方社区或提交 Issue 反馈,我们会第一时间响应处理。
PbootCMS 官方团队
官方网站:https://www.pbootcms.com | 开发手册:https://www.pbootcms.com/docs.html
下一篇:没有了!