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

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的属性声明部分:

  1. 将原文件第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;
  1. 保存文件后执行bin/magento cache:flush清除缓存即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 02:24:04