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

安装PHProjekt后登录遇each()函数弃用错误求助

解决PHProjekt登录时each()函数废弃的报错

嘿,这个问题我之前帮同学处理过,本质就是PHP版本兼容性的锅!

问题根源

你看到的报错:

Deprecated: The each() function is deprecated. This message will be suppressed on further calls in C:\xampp\htdocs\phprojekt\library\Zend...

是因为PHP 7.2及以上版本已经正式废弃并移除了each()函数,而你安装的PHProjekt版本比较老旧,代码里还在使用这个被淘汰的函数,所以登录时触发了警告(虽然提示是Deprecated,但实际会导致程序逻辑异常,没法正常登录)。

具体解决方法

方法一:修改代码适配新PHP版本(推荐)

这是最安全、可持续的解决方式,步骤很清晰:

  • 1. 定位报错文件
    根据报错路径,找到C:\xampp\htdocs\phprojekt\library\Zend下对应的具体文件(比如大概率是Zend/Controller/Request/Http.php这类核心文件)。
  • 2. 替换each()为现代PHP写法
    PHP官方推荐用foreach()或者key()+current()组合替代each(),给你两个常见场景的替换示例:
    • 场景1:循环遍历数组
      原代码:
      while (list($key, $val) = each($myArray)) {
          // 原有业务逻辑
      }
      
      替换为:
      foreach ($myArray as $key => $val) {
          // 原有业务逻辑直接保留即可
      }
      
    • 场景2:单次获取数组键值对并移动指针
      原代码:
      $pair = each($myArray);
      
      替换为:
      $key = key($myArray);
      $val = current($myArray);
      $pair = ['key' => $key, 'value' => $val];
      next($myArray); // 模拟each()自带的指针移动行为
      
  • 3. 全局检查替换
    报错提示“后续调用会抑制该消息”,说明项目里不止一处用了each()。你可以用编辑器的全局搜索(比如VS Code的Ctrl+Shift+F),在phprojekt目录下搜each(,把所有出现的地方都按上面的方式替换掉。

方法二:降低PHP版本(临时方案)

如果你不想折腾代码,也可以在XAMPP里切换到PHP 7.1及以下版本(each()在PHP 7.1中只是警告,7.2+才会彻底废弃)。不过这个方法真的不推荐,旧PHP版本有安全漏洞,长期用风险很大。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:27:17