You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP7.2环境下安装MODX后登录管理面板出现each()函数废弃提示的解决方法

解决PHP 7.2环境下MODX登录出现each()函数废弃警告的问题

这个问题我之前碰到好多次了——PHP 7.2正式把each()函数标记为废弃,而老版本的MODX还在代码里使用这个函数,所以登录管理面板时就会弹出那个烦人的Deprecated: The each() function is deprecated提示。下面给你几个实用的解决办法,按优先级排序:

  • 优先升级MODX到兼容版本:这是最彻底的解决方案。MODX从2.6.0版本开始就已经修复了each()函数的兼容问题,建议直接升级到最新的稳定版(比如2.8.x系列)。升级前一定要记得备份网站的所有文件和数据库,避免意外丢失数据。升级后不仅能解决这个警告,还能获得官方的安全更新和功能优化。

  • 手动替换代码中的each()调用(应急方案):如果暂时没办法升级MODX,可以手动修改核心文件里的each()用法。each()通常和list()配合使用,比如原来的代码:

    while (list($key, $val) = each($someArray)) {
        // 业务逻辑
    }
    

    可以替换成PHP 7.2支持的foreach写法:

    foreach ($someArray as $key => $val) {
        // 业务逻辑
    }
    

    你需要在MODX核心目录(core/)里搜索each(,找到所有调用这个函数的地方逐一替换。常见的文件比如core/model/modx/modcachemanager.class.php、core/model/modx/modparser.class.php里都可能有这类代码。替换前务必备份原文件,防止改错导致系统崩溃。

  • 临时屏蔽废弃警告(不推荐长期使用):如果只是想临时隐藏警告,可以调整PHP的错误报告级别。你可以在MODX的config.core.php或者后台入口文件manager/index.php的顶部添加一行代码:

    error_reporting(E_ALL & ~E_DEPRECATED);
    

    或者修改服务器的php.ini文件,把error_reporting设置为E_ALL & ~E_DEPRECATED。但这个方法只是“掩耳盗铃”,没有解决根本问题,不建议长期使用,因为它会隐藏其他可能的重要错误提示。

内容的提问来源于stack exchange,提问作者Alex F.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:09:05