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

PrestaShop从1.7.7.5升级到1.7.7.7后出现Undefined index: attribute_price错误

报错原因
  1. 语法逻辑疏漏:PrestaShop 1.7.7.7版本的代码删除了原有的isset()判断,直接使用?:三元简写访问数组索引。PHP中?:只会判断值是否为假,不会提前判断索引是否存在,直接访问不存在的数组索引会触发Undefined index级别的错误。
  2. 触发场景限制:当Combination(商品组合)功能关闭时,商品数据查询的SQL语句不会包含attribute_price字段,返回的$row数组中不存在该索引,因此会触发报错;功能开启时该字段会被正常查询,因此不会出现问题。
  3. 测试代码无报错的原因:你自行测试的代码没有触发报错,是因为测试脚本的PHP错误报告等级屏蔽了E_NOTICE级别的提醒,而PrestaShop框架默认开启了严格的错误捕获规则,E_NOTICE级别的问题也会被抛出为可见报错。
解决办法
  • 方案1:修复核心代码(推荐)
    将/classes/Product.php文件第3418行的代码替换为兼容写法,可以用PHP7+支持的null合并运算符,等价于原有带isset()的逻辑,不会触发索引不存在报错:
    'attribute_price' => $row['attribute_price'] ?? null,
    
    也可以直接改回1.7.7.5版本的原有代码:
    'attribute_price' => (isset($row['attribute_price']) ? $row['attribute_price'] : null),
    
  • 方案2:临时规避
    后台开启Combination功能,即使你不使用商品组合的相关能力,开启后查询SQL会自动带上attribute_price字段,即可避免该报错。

内容的提问来源于stack exchange,提问作者Daniel Morgenthaler

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 08:15:04