PHP 5.6 + MySQL 5.7 → PHP 8.3 + MySQL 8.0 升级步骤
当前状态(已完成)
- 本地环境:PHP 8.3 + MySQL 8.0 + Nginx
- 框架/代码已做 PHP 8.3 兼容改造(如
version.inc.php、bootstrap.inc.php、db 类等) -
info.php正常 → PHP 环境与扩展 OK -
test_db.php正常 → MySQL 8.0 连接 OK -
data/config.php已配置(库名:demo_xiaoshan)
下一步(按顺序执行)
1. 确认 MySQL 8.0 数据与字符集
- 若从旧库迁移:在 MySQL 5.7 上导出数据,在 MySQL 8.0 上导入;注意用户认证方式(MySQL 8.0 默认
caching_sha2_password,若连不上可改为mysql_native_password)。 - 若用现有 demo 库:确认库
demo_xiaoshan已建好,且表结构已导入(如demo_xiaoshanxin_table.sql/demo_xiaoshanxin_data.sql)。 - 字符集:建议库和表使用
utf8mb4,与 MySQL 8.0 默认一致;config 中已可选utf8mb4(见下方配置说明)。
2. 配置与依赖
- Redis:当前
config.php中cache为redis。若本地未装 Redis,请改为mysql,否则会报错。 - 开发模式(可选):需在后台“执行 SQL”或做部分调试时,将
$config['setting']['development']设为1。
3. 访问后台做一次完整验证
- 浏览器访问:http://localhost/web/index.php(或你的 Nginx 配置的站点根路径对应地址)。
- 使用创始人账号登录(founder 在 config 中为
1,需数据库中已有对应用户)。 - 登录后检查:
- 首页 / 工作台是否正常;
- 云服务 → 升级(若有入口)走一遍;
- 系统 → 数据库 看是否有表结构差异或提示。
4. 功能回归测试
- 关键业务:公众号/小程序配置、用户登录、订单、支付等按你们实际业务点几条。
- 若有报错:看 PHP 错误日志(开发模式下会直接报错)或 Nginx/PHP-FPM 日志,再针对报错改代码或配置。
5. 上线前(从本机迁到 PHP 8.3 + MySQL 8.0 生产环境)
- 再次确认生产环境 PHP 8.3、MySQL 8.0、Nginx 与本地一致或兼容。
- 生产
data/config.php使用生产库与 Redis(若用)。 - 备份旧站数据与 DB,再切流量。
配置小贴士(MySQL 8.0)
- charset:推荐
utf8mb4(在config.php中db.master.charset、db.master.slave.*.charset可改为utf8mb4),与 MySQL 8.0 默认一致,避免部分 emoji 或生僻字问题。 - Redis:本地未装 Redis 时务必把
$config['setting']['cache']改为'mysql'。
常见问题
| 现象 | 可能原因 | 处理 |
|---|---|---|
| 后台打开报 500 / 白屏 | PHP 报错或 Redis 连不上 | 开 development=1 看报错;或改用 mysql 缓存 |
| 数据库连接失败 | 认证插件或端口不对 | MySQL 8.0 用户改为 mysql_native_password 或检查 host/port |
| 某页报 deprecated / notice | 个别代码未兼容 PHP 8.3 | 根据报错文件与行号改掉废弃写法 |
完成以上步骤后,项目在 PHP 8.3 + MySQL 8.0 上的升级与验证流程即算走通。
PHP 8.3 错误日志与功能回归检查清单
1. PHP 错误日志建议配置
- 在 PHP 配置中确保:
display_errors = Off(线上推荐关闭,开发可开启但仍应写日志)log_errors = Onerror_reporting = E_ALL
- 为站点单独指定 error_log(示例):
; 推荐:指向项目目录下 data/logs(本项目内置的默认日志目录)
error_log = /path/to/hospital_8/data/logs/php-error.log说明:如果未在 php.ini 中显式指定
error_log,本项目会在framework/bootstrap.inc.php中自动将error_log
设置为相对于项目根目录的data/logs/php-error.log。后续所有“白屏/接口 500”问题,优先查看该文件,并按时间戳对应到具体请求。
2. 核心功能回归 URL 清单(PHP 8 回归时使用)
每轮批量修改后,按下面顺序点一遍页面,并在操作后查看 PHP 错误日志中是否有新的 Fatal / TypeError / Warning:
- 系统与登录
- 后台入口:
/web/index.php(登录页 / 仪表盘) - 用户登录 / 退出:
web/source/user/login.ctrl.php相关页面
- 后台入口:
- XSX_V3 模块核心
- 仪表盘 / 概况:
?c=site&a=entry&m=xsx_v3&do=dashboard&op=gk - 患者列表:
?c=site&a=entry&m=xsx_v3&do=copysite&op=userlist&act=profile.userlist - 患者档案详情:
?c=site&a=entry&op=adduser&do=copysite&m=xsx_v3&act=profile.adduser - 挂号/问诊订单列表:
addons/xsx_v3/inc/web/order.inc.php对应的若干列表页 - 药房 / 购药订单:
addons/xsx_v3/inc/web/medicine.inc.php相关列表与详情 - 体检 / 检查:
addons/xsx_v3/inc/web/physical.inc.php、addons/xsx_v3/inc/web/jiancha.inc.php - 财务统计:
addons/xsx_v3/inc/web/financ.inc.php
- 仪表盘 / 概况:
- 档案相关扩展功能
- 档案管理页所有 Tab:
profile.adduser(基本信息、积分信息、问诊记录、体征记录、订单记录等) - 病历 PDF 导出:
?c=site&a=entry&op=binglipdf&do=copysite&m=xsx_v3&act=profile.binglipdf&orderNo=...
- 档案管理页所有 Tab:
- 系统功能
- 系统设置:
/web/index.php?c=system&a=site - 数据库管理:
/web/index.php?c=system&a=database - 日志查看:
/web/index.php?c=system&a=logs及 XSX 模块日志页
- 系统设置:
建议:每次集中修改一批控制器或模板后,按以上清单快速点一遍,并在 PHP 日志中搜索是否出现新的报错,再根据报错文件与行号回到项目中逐一修正。
作者:周珊 创建时间:2026-05-05 23:38
最后编辑:周珊 更新时间:2026-05-05 23:38
最后编辑:周珊 更新时间:2026-05-05 23:38