安装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()自带的指针移动行为
- 场景1:循环遍历数组
- 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
相关产品推荐
相关产品推荐

