近期 PbootCMS 发布了 v3.2.14 版本,本次版本主要针对历史版本中存在的安全问题进行修复和加固。为了保障网站安全,建议正在使用 PbootCMS 3.2.5 及以上版本 的站长,尽快将系统升级到 v3.2.14。
本文主要面向普通站长和新手用户,介绍从 3.2.5 及以上版本升级到 v3.2.14 的推荐方法、手动覆盖范围、缓存清理方式,以及不同 Web 环境下伪静态配置需要注意的地方。
升级前请务必先做好备份,避免升级过程中因网络、权限、文件覆盖或数据库操作异常导致网站无法恢复。
建议至少备份以下内容:
整站文件
数据库
config/
data/
static/
template/
其中:
如果网站做过二次开发,或者修改过系统源码,请额外备份自己修改过的文件。
对于大多数站长,建议优先使用后台在线升级。
登录网站后台后,进入:
系统管理 → 在线升级
后台在线升级支持跨版本升级,通常会自动处理代码文件和数据库升级脚本,是普通用户最简单、最稳妥的升级方式。
如果在线升级过程中出现下载失败、网络超时、文件权限不足等问题,可以再参考下面的手动升级方式。
如果后台在线升级不可用,可以下载 v3.2.14 完整源码包进行手动升级。
手动升级时的基本原则是:
保留自己的配置、数据、上传资源和模板,其余程序文件使用新版覆盖。
一般情况下,请保留以下目录:
config/
data/
static/
template/
然后使用 v3.2.14 的新版文件覆盖以下文件和目录:
admin.php
api.php
index.php
apps/
core/
doc/
rewrite/
如果网站没有二次开发,通常按以上方式覆盖即可。
如果网站做过二次开发,不建议直接粗暴覆盖,应该先对比修改过的文件,再将新版安全修复代码合并进去。
从 3.2.5 到 v3.2.14,主要变更集中在入口文件、后台控制器、前台控制器、数据库操作层、模板解析、UEditor、伪静态规则和数据库升级脚本。
主要涉及以下文件,二开用户可以重点参考:
admin.php
api.php
index.php
apps/admin/controller/IndexController.php
apps/admin/controller/system/DatabaseController.php
apps/admin/controller/system/UpgradeController.php
apps/admin/view/default/system/config.html
apps/common/AdminController.php
apps/common/HomeController.php
apps/common/version.php
apps/home/controller/ParserController.php
apps/home/controller/SearchController.php
core/basic/Model.php
core/database/Builder.php
core/database/Mysqli.php
core/database/Pdo.php
core/database/Sqlite.php
core/extend/ueditor/php/action_crawler.php
core/extend/ueditor/php/action_list.php
core/extend/ueditor/php/action_upload.php
core/extend/ueditor/php/controller.php
core/extend/ueditor/ueditor.config.js
core/function/handle.php
core/function/helper.php
core/init.php
core/template/error.html
core/view/Parser.php
core/view/View.php
rewrite/.htaccess
rewrite/nginx.txt
rewrite/web.config
static/backup/sql/mysql-3.2.5-update.sql
static/backup/sql/mysql-3.2.11-update.sql
如果只是普通建站用户,没有修改过系统源码,一般不需要逐个处理这些文件,按上一节覆盖新版程序文件即可。
升级完成后,请删除网站根目录下的缓存目录:
runtime/
删除 runtime/ 是为了清理旧版本生成的缓存文件,避免升级后仍然读取旧缓存,导致前台页面、后台页面、伪静态链接或模板解析出现异常。
不用担心删除该目录会影响系统运行,系统在后续访问时会自动重新生成需要的缓存文件。
如果使用的是 PbootCMS 默认 SQLite 数据库,并且通过后台在线升级,通常不需要手动处理数据库脚本。
如果使用的是 MySQL 数据库,手动升级时需要关注以下升级脚本:
static/backup/sql/mysql-3.2.5-update.sql
static/backup/sql/mysql-3.2.11-update.sql
其中:
如果是后台在线升级,系统通常会自动处理相关数据库升级。
如果是手动升级 MySQL 数据库,请先备份数据库,再根据实际版本情况按顺序执行对应 SQL,或对照数据库确认相关配置是否已经处理。
升级到 v3.2.14 后,建议站长检查 Web 服务器伪静态配置,尤其是手动升级或服务器曾经自行修改过伪静态规则的网站。
新版源码中的 rewrite/ 文件夹提供了不同服务器环境的参考规则:
rewrite/.htaccess:Apache 环境参考
rewrite/nginx.txt:Nginx 环境参考
rewrite/web.config:IIS7+ 环境参考
Apache 环境通常使用 .htaccess,可以参考:
rewrite/.htaccess
重点规则包括:
RewriteRule ^(data|static/backup)/ - [F,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?p=$1 [QSA,PT,L]
其中 data/ 和 static/backup/ 目录会被禁止直接访问,不存在的文件或目录会被重写到 index.php?p=xxx。
Nginx 环境可以参考:
rewrite/nginx.txt
参考规则如下:
location / {
if (!-e $request_filename){
rewrite ^/(.*)$ /index.php?p=$1 last;
}
}
location ~ ^/(data|static/backup)/ {
deny all;
}
修改 Nginx 配置后,请记得重载或重启 Nginx 服务。
IIS7+ 环境可以参考:
rewrite/web.config
如果是 IIS6 环境,请根据服务器实际情况自行配置伪静态规则。
升级完成后,建议按下面的顺序检查网站是否正常:
如果升级后出现页面异常、404、后台无法访问等问题,优先检查 runtime/ 是否已经删除,以及伪静态规则是否已经按 rewrite/ 目录中的参考配置调整。
从 3.2.5 到 v3.2.14,中间版本主要包含以下安全修复和系统加固:
因此,本次 v3.2.14 属于重要安全升级版本。建议使用 3.2.5 及以上版本的站长尽快完成升级,并在升级后检查网站访问、后台登录、内容编辑和伪静态链接是否正常。
下一篇:没有了!