PHP8.2废弃函数,老CMS程序报错修复

PHP8.2对很多旧函数标记了废弃,老CMS程序如果还在调用这些函数,页面会直接报错或输出警告。
本文从实际报错日志出发,帮你定位是哪个函数引起的,然后给出替换或屏蔽的具体操作,让网站先恢复运行。

先看懂报错信息里的函数名

打开网站根目录下的 error_log,或者宝塔面板的网站日志,搜索 Deprecated 关键字。
典型的报错长这样:

PHP Deprecated: Function create_function() is deprecated in /www/wwwroot/xxx/inc/func.php on line 128

这行信息告诉你三件事:废弃函数名是 create_function(),文件路径是 /www/wwwroot/xxx/inc/func.php,行号是 128。
先把函数名和文件路径记下来,后面逐个处理。

如果没有日志,
可以在宝塔面板里开启 PHP 错误日志:
网站 -> 设置 -> 配置文件,
确认 display_errors 为 On,
或者查看 php.ini 中的 error_log 路径。

常见废弃函数替换对照

PHP8.2 中被废弃的函数不多,老CMS里高频出现的主要是下面几个:

  • create_function():改用匿名函数,例如把 create_function('$a', 'return $a*2;') 改成 function($a) { return $a*2; }。
  • each():用 foreach 替代,原来 while(list($k,$v)=each($arr)) 可以直接改成 foreach($arr as $k=>$v)。
  • utf8_encode() 和 utf8_decode():用 mb_convert_encoding($str, 'UTF-8', 'ISO-8859-1') 替代。
  • ${var} 字符串插值:改成 {$var} 写法,否则 PHP8.2 会报废弃警告。

修改前先备份原文件,用 cp inc/func.php inc/func.php.bak 复制一份。
替换时注意函数参数个数和返回值要一致,避免改完逻辑出错。

改完后如何验证是否生效

保存文件后,刷新之前报错的页面。
如果页面正常显示,并且 error_log 里不再出现同一条废弃警告,说明修复成功。
如果还报错,检查是否还有其他文件调用了同一个废弃函数,可以用 grep -r 'create_function' /www/wwwroot/xxx 全站搜索。

对于无法立即修改代码的老CMS,可以临时在 php.ini 中设置 error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT,然后重启 PHP 服务。
这样废弃警告不会输出到页面,但函数本身仍然不可用,只适合临时过渡。

避坑:不要直接屏蔽所有错误

有些教程会让你把 error_reporting 设为 0,这样虽然页面不报错了,但真正的致命错误也会被隐藏,后面排查问题更难。
建议只屏蔽 E_DEPRECATED,保留 E_ERROR 和 E_WARNING。

另外,PHP8.2 移除了一些函数,比如 mysql_connect(),这类不是废弃而是直接删除,必须改用 mysqli 或 PDO,否则会报致命错误。
遇到 Call to undefined function 时,要区分是废弃还是移除。

如果你的老CMS长期不更新,可以考虑降级到 PHP7.4 作为过渡方案,但这不是长久之计,建议尽早替换为维护中的程序。

常见疑问

问:改完代码后网站白屏怎么办?
先恢复备份文件,再检查替换后的语法是否正确,可以用 php -l 文件名 检查语法。

问:全站搜索废弃函数时,有些文件是加密的怎么处理?
加密文件无法直接修改,只能联系程序作者获取兼容版本,或者临时用 error_reporting 屏蔽警告。

问:升级 PHP8.2 后后台登录不了,但前台正常?
后台通常有更多旧代码,优先检查登录相关的文件,搜索 each() 和 create_function() 的使用位置。

处理 PHP8.2 废弃函数引起的报错,核心就是先定位函数名和文件行号,再逐个替换,最后验证日志是否干净。
整个过程不需要懂太多 PHP,按报错信息照做就能解决大部分老CMS的兼容问题。

分享到:
上一篇
PHP8新特性,CMS程序升级PHP8踩坑记录
下一篇
文件上传类型限制,CMS后台禁止上传脚本
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意