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

Prestashop1.7.6.5修改module.php代码不生效仍报旧错误

问题描述
  • 修改站点模块代码时,Prestashop无法识别module.php文件的代码改动
  • 此前曾对该模块做过定制调整,近期版本更新触发报错需要二次修改,出现异常:即便删除报错对应的代码行,系统依然抛出完全相同的错误
  • 具体报错信息:

PHP message: PHP Notice: Undefined index: ordersorderFilter!active in /modules/module/module.php on line 104

  • 已完成的排查操作:
    • 先后尝试注释报错行、直接从文件中删除报错行,报错始终存在
    • 关闭Prestashop后台所有缓存开关、开启调试模式
    • 删除/var/cache/目录下的dev和prod文件夹,问题未解决
    • 在服务器端使用grep命令全局检索对应代码行,确认源文件删除后服务器内无该代码残留(重新加回代码时可正常检索到)
排查解决思路

按优先级从高到低依次排查:

  • 清空PHP OPcache缓存:绝大多数代码修改不生效的非框架问题都来自OPcache。服务器默认开启OPcache时,会缓存PHP脚本编译后的字节码,如果没有配置文件变更自动校验规则,修改代码后不会触发重新编译。可以通过重启PHP-FPM服务(Apache运行环境直接重启Apache),或者执行php -r "opcache_reset();"清空OPcache缓存后再验证。
  • 排查主题目录下的模块覆写文件:Prestashop会优先加载当前启用主题下的模块覆写文件,路径通常为/themes/<当前使用主题名>/modules/<模块名>/module.php,如果你只修改/modules/目录下的源文件,主题目录下的覆写文件逻辑依然会执行。不要限定检索路径,全局搜索整个站点下所有PHP文件中的ordersorderFilter!active关键词,确认是否存在其他位置的文件包含这段报错逻辑。
  • 检查override目录下的类覆写:Prestashop原生支持模块类覆写,覆写文件统一存放在/override/modules/<模块名>/module.php路径,该路径下文件的加载优先级高于模块原生文件,哪怕原生文件里的报错代码已经删除,覆写文件里的对应代码依然会触发报错。直接进入该路径检查是否存在对应模块的覆写文件,核对104行附近的代码逻辑。
  • 核对文件加载路径与权限:执行ls -l /modules/<模块名>/module.php确认文件的最后修改时间和你实际编辑的时间一致,同时确认文件属主属组和Web服务运行用户一致,避免出现编辑了其他路径下的文件副本、Web服务实际读取的是另一路径下文件的情况。
  • 排查服务器反向代理/缓存层:如果站点前端部署了Varnish、Nginx FastCGI缓存或者CDN,先临时绕过缓存层直接访问源站,确认不是缓存层返回了旧的响应结果。

内容的提问来源于stack exchange,提问作者Dev MAJ

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 02:24:15