PrestaShop联系表单提交报404,后台未收消息,求助解决
解决PrestaShop联系表单提交报错404且后台无消息的问题
问题根源
调试发现tawkto.php第135行触发ContextErrorException,原因是json_decode()被传入数组而非预期的字符串,这直接导致联系表单提交逻辑异常,返回{"error":true,"message":"404 not found!"}且后台收不到消息。
具体解决步骤
1. 修复tawkto模块代码错误
- 找到模块文件路径:
/modules/tawkto/tawkto.php,定位到第135行 - 检查该行对
json_decode()的调用逻辑,调整为适配变量类型的写法:// 替换原json_decode调用代码 if (is_array($target_variable)) { $data = $target_variable; // 若变量本身是数组,直接使用 } elseif (is_string($target_variable)) { $data = json_decode($target_variable, true); // 强制返回数组格式,避免对象处理问题 } else { $data = []; // 兜底初始化空数组 } - 保存修改后清空PrestaShop缓存,测试联系表单提交是否恢复正常。
2. 禁用/替换tawkto模块
- 若代码修改无效,直接在后台禁用tawkto模块,重新测试联系表单。如果禁用后功能正常,说明该模块与当前PrestaShop 1.7.8.8/PHP7.3环境存在兼容性问题。
- 可尝试卸载模块后重新安装最新版本,或更换其他兼容的在线客服模块。
3. 排查路由与环境配置
- 检查后台
设计->页面中联系页面的URL配置,确保POST请求能正确路由到表单处理控制器。 - 验证PHP环境:确认
json扩展已启用,allow_url_fopen配置开启(可通过phpinfo()查看)。 - 检查站点根目录的
.htaccess文件,排除重写规则干扰表单POST请求的可能。
内容的提问来源于stack exchange,提问作者fullfixx
相关产品推荐
相关产品推荐

