Magento分类页报T_NS_SEPARATOR语法错误该如何排查解决?
报错原因
这个报错是PHP版本不兼容导致的:
你安装的MageBig AjaxFilter扩展在声明类属性时使用了「类型化属性」语法,该特性是PHP 7.4版本才正式支持的,而你当前服务器运行的PHP版本低于7.4,无法识别该语法,因此抛出解析错误。
报错指向的第16行就是类的第一个属性声明代码:
private \Magento\Catalog\Model\Product\ProductList\Toolbar $toolbarModel;
低版本PHP不支持在属性前后指定变量类型,因此会把属性名前的命名空间分隔符\识别为异常字符,触发T_NS_SEPARATOR相关报错。
解决方案
你可以根据实际情况选择以下任意一种方案:
方案一:升级PHP版本(推荐)
将服务器PHP版本升级到7.4及以上,注意升级前确认你的Magento核心版本适配对应的PHP版本:
- Magento 2.3.x:适配PHP 7.3~7.4
- Magento 2.4.x:适配PHP 7.4~8.1
升级完成后执行bin/magento cache:flush清除Magento缓存即可恢复正常。
方案二:修改扩展代码适配低版本PHP
如果暂时无法升级PHP版本,可直接修改报错文件app/code/MageBig/AjaxFilter/Plugin/Catalog/Product/ProductList/Toolbar.php的属性声明部分:
- 将原文件第16~19行的属性声明:
private \Magento\Catalog\Model\Product\ProductList\Toolbar $toolbarModel; private RequestInterface $request; private Registry $coreRegistry; private ScopeConfigInterface $scopeConfig;
替换为兼容低版本PHP的写法:
/** @var \Magento\Catalog\Model\Product\ProductList\Toolbar */ private $toolbarModel; /** @var RequestInterface */ private $request; /** @var Registry */ private $coreRegistry; /** @var ScopeConfigInterface */ private $scopeConfig;
- 保存文件后执行
bin/magento cache:flush清除缓存即可。
内容的提问来源于stack exchange,提问作者Edin Dizajn
相关产品推荐
相关产品推荐

