PrestaShop 1.7.8.8升级后商品页面间歇性空白报错求助
PrestaShop 1.7.8.8 商品页面间歇性空白问题解决方法
问题根源
报错明确指向HookCore::callHookOn()方法的第三个参数要求是array,但实际传入了null,且问题间歇性出现,说明挂载到filterProductContent钩子的某个模块在特定场景下传递/返回了null,或钩子调用上下文的参数偶尔缺失。
解决步骤
1. 定位关联模块
首先找到所有挂载了filterProductContent钩子的模块:
- 数据库查询:执行SQL语句
(注意替换表前缀SELECT m.name FROM ps_hook_module hm JOIN ps_module m ON hm.id_module = m.id_module WHERE hm.hook_name = 'filterProductContent';ps_为你的实际前缀) - 后台操作:进入后台「模块 > 位置」页面,搜索
filterProductContent钩子名称,查看关联模块列表。
2. 排查触发模块
逐个禁用上述模块,每次禁用后多次刷新商品页面测试,找到导致间歇性空白的模块:
- 禁用模块后问题消失,即可锁定该模块为故障源。
3. 修复模块代码
找到该模块的钩子实现代码(通常是模块目录下的hooks/filterProductContent.php,或主模块文件中的hookFilterProductContent()方法):
- 检查方法是否在某些场景下返回了
null,确保始终返回数组类型(即使是空数组[]); - 检查方法内是否有未处理的异常,导致参数传递异常。
4. 临时应急修复(不推荐长期使用)
若暂时无法修复模块,可临时修改核心文件ProductController.php第384行的Hook::exec调用:
将原代码中第三个参数的null替换为[](空数组),确保符合方法参数类型要求:
Hook::exec('filterProductContent', [], null, false, true, false, null, true)
5. 额外排查点
- 检查服务器缓存(如OPcache、APC)是否存在异常,尝试重启缓存服务或清理缓存;
- 查看服务器PHP错误日志,排查是否有数据库连接波动、文件权限异常等间歇性问题。
内容的提问来源于stack exchange,提问作者Barto
相关产品推荐
相关产品推荐

