PHP 8.1 升级兼容性踩坑清单
把一个老项目从 PHP 7.4 升级到 8.1,踩了不少坑,整理如下。
常见问题
utf8_encode/utf8_decode已废弃,改用mb_convert_encoding。- 未定义的动态属性会触发 Deprecated 警告,建议在类上声明或加
#[AllowDynamicProperties]。 - 字符串与数字的比较语义变化,务必统一用
===。
建议
升级前先跑静态检查工具,逐个修复后再切生产环境。
把一个老项目从 PHP 7.4 升级到 8.1,踩了不少坑,整理如下。
utf8_encode/utf8_decode 已废弃,改用 mb_convert_encoding。#[AllowDynamicProperties]。===。升级前先跑静态检查工具,逐个修复后再切生产环境。