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

迁移CodeIgniter项目后提交表单出现each()函数弃用错误求助

解决CodeIgniter提交表单时each()函数废弃的错误

嗨,这个问题我迁移项目的时候也踩过一模一样的坑!你猜的没错,根源就是PHP版本差异——PHP 7.2及以上版本已经正式废弃了each()函数,而你用的旧版CodeIgniter框架核心代码里还在依赖这个函数,所以新电脑的高版本PHP环境就会触发这个报错。

快速修复步骤

直接修改报错文件的对应代码就行,操作很简单:

  1. 找到项目里的system/core/Security.php文件(如果是自定义核心文件可能在application/core/下,看你CI版本)
  2. 定位到第357行,旧代码大概是这样的:
while (list($key, $val) = each($_COOKIE))
{
    if (strpos($key, 'csrf_cookie_name') !== FALSE)
    {
        $_COOKIE[$this->_csrf_cookie_name] = $val;
        unset($_COOKIE[$key]);
    }
}
  1. 把这段依赖each()的循环替换成PHP7+支持的foreach写法:
foreach ($_COOKIE as $key => $val)
{
    if (strpos($key, 'csrf_cookie_name') !== FALSE)
    {
        $_COOKIE[$this->_csrf_cookie_name] = $val;
        unset($_COOKIE[$key]);
    }
}

更彻底的长期方案

如果不想修改框架核心文件(毕竟改核心文件后续升级麻烦),建议直接把CodeIgniter升级到2.2.6版本(2.x系列最后一个稳定版,已经修复了PHP7兼容性问题),或者直接升级到3.x/4.x的新版本,这样既能解决当前报错,还能获得框架的安全更新和功能优化。

内容的提问来源于stack exchange,提问作者Syam

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:48:38