把一个老项目从 PHP 7.4 升级到 8.1,踩了不少坑,整理如下。

常见问题

  • utf8_encode/utf8_decode 已废弃,改用 mb_convert_encoding
  • 未定义的动态属性会触发 Deprecated 警告,建议在类上声明或加 #[AllowDynamicProperties]
  • 字符串与数字的比较语义变化,务必统一用 ===

建议

升级前先跑静态检查工具,逐个修复后再切生产环境。