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

Magento2执行setup:di:compile时报PHP可选参数顺序弃用错误

Magento 2.4.4 setup:di:compile 报错修复

问题原因

该报错由PHP 8.0+版本语法规则变更触发,Magento 2.4.4官方支持PHP 8.1运行环境,你使用的第三方MGS Fbuilder模块代码未适配高版本PHP语法规范:函数声明中,带默认值的可选参数不能放在无默认值的必选参数之前,否则PHP会抛出该Deprecated级别错误,直接中断DI编译流程。

报错明细

  • 错误类型:Deprecated Functionality: Optional parameter $ids declared before required parameter $checkedCat is implicitly treated as a required parameter
  • 出错文件路径:/home/seedsat/public_html/magento244/app/code/MGS/Fbuilder/Helper/Data.php
  • 出错行号:第162行
  • 原问题代码:
public function getTreeCategory($category, $parent, $ids = [], $checkedCat)

修复方法

可根据实际场景二选一修复:

方案1(规范修复,推荐)

调整参数声明顺序,将所有无默认值的必选参数放在带默认值的可选参数之前,符合PHP官方语法要求。
将第162行代码修改为:

public function getTreeCategory($category, $parent, $checkedCat, $ids = [])

*注意:修改函数定义后,需要全局搜索项目中所有调用getTreeCategory方法的位置,对应调整传参顺序,保证第三个传入参数为$checkedCat的目标值,第四个传入参数为原$ids数组,避免传参错位引发业务逻辑错误。

方案2(快速修复,无需调整调用逻辑)

如果不想逐一修改方法调用位置,可以给位于可选参数后的必选参数设置符合业务逻辑的默认值,满足PHP语法要求。
将第162行代码修改为(默认值可根据业务实际场景调整,分类选中参数默认设为null或空数组均可适配绝大多数场景):

public function getTreeCategory($category, $parent, $ids = [], $checkedCat = null)

修复后验证

文件修改完成后,在Magento根目录执行以下命令重新完成编译和缓存清理:

php bin/magento setup:di:compile
php bin/magento cache:clean
php bin/magento cache:flush

命令执行无报错即修复完成。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 04:36:14