迁移PrestaShop 1.5.6后出现HOOK_EGR_FBLOGIN未定义索引错误求助
解决PrestaShop 1.5.6迁移后HOOK_EGR_FBLOGIN未定义的错误
我碰到过好几个类似的PrestaShop迁移问题,这个错误本质上是Smarty编译缓存残留,或者Facebook登录模块的钩子关联丢失导致的,给你一步步的解决办法:
第一步:先清理Smarty编译缓存
这个错误提示来自编译后的模板文件,迁移后旧的缓存文件还在,会引用不存在的钩子索引。
- 如果能正常登录后台:进入
高级参数->性能,点击「清除缓存」,记得勾选「清除Smarty编译缓存」和「清除缓存文件夹」这两个选项,然后保存。 - 如果后台进不去:直接用FTP或者主机的文件管理器,找到
cache/smarty/compile和cache/smarty/cache这两个文件夹,删除里面的所有文件(别删文件夹本身)。
第二步:检查并修复Facebook登录模块状态
这个钩子是那个EGR Facebook登录模块注册的,模块状态异常就会导致钩子索引不存在:
- 登录后台后,进入
模块->模块管理,找到对应的Facebook登录模块(名称应该包含EGR FB Login),确保它是已安装且启用的状态。- 如果模块是禁用的,直接启用它;
- 如果模块没安装,重新上传安装包(从旧主机备份里导出模块文件,或者找原模块安装包)进行安装。
模块启用后,PrestaShop会自动注册对应的钩子,HOOK_EGR_FBLOGIN索引应该会自动生成。
第三步:手动修复钩子关联(如果前两步没用)
有时候迁移后模块的钩子绑定会丢失,或者钩子没在数据库里注册:
- 先检查数据库:登录phpMyAdmin,打开你的PrestaShop数据库,查看
ps_hook表(注意替换成你的实际表前缀,比如如果你的前缀是presta_就找presta_hook),搜索name字段值为HOOK_EGR_FBLOGIN的记录。- 如果没有这条记录,说明钩子没注册,可以先尝试卸载模块再重新安装,让模块自动创建钩子;
- 如果卸载重装还是不行,手动执行SQL插入:
记得把INSERT INTO ps_hook (name, title, description, position) VALUES ('HOOK_EGR_FBLOGIN', 'EGR Facebook Login Hook', 'Hook for EGR Facebook Login module', 1);ps_换成你的数据库表前缀。
- 检查模块的钩子绑定:进入模块的设置页面,确认它已经绑定到了
header钩子(因为错误出现在header.tpl的编译文件里),如果没绑定,手动添加绑定。
第四步:检查主题模板文件
如果上面的方法都没用,看看你的主题模板:
找到themes/你的主题名称/header.tpl文件,检查里面有没有调用{$HOOK_EGR_FBLOGIN}的代码。如果这个模块你已经不用了,直接删掉这段代码;如果还要用模块,就回到前面的步骤确保模块和钩子正常。
内容的提问来源于stack exchange,提问作者Pablo
相关产品推荐
相关产品推荐

