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

Prestashop 8.1.1删除产品触发PHP致命错误求助

问题描述

在PrestaShop 8.1.1环境中执行批量删除产品的自定义脚本时,通过产品ID创建实例并调用delete()方法触发PHP致命错误;使用Webservice删除产品时,同样出现该错误。具体错误信息如下:

313784 FastCGI sent in stderr: "PHP message: PHP Fatal error:  Uncaught Error: Call to a member function get() on null in /usr/share/nginx/html/****/classes/Image.php:642
Stack trace:
#0 /usr/share/nginx/html/****/classes/Image.php(210): ImageCore->deleteImage()
#1 /usr/share/nginx/html/****/classes/Product.php(1600): ImageCore->delete()
#2 /usr/share/nginx/html/****/ext/newtry.php(601): ProductCore->deleteImages()
#3 {main}

触发错误的Image.php第642行附近代码:

// Delete auto-generated images
$image_types = ImageType::getImagesTypes();
$sfContainer = SymfonyContainer::getInstance();
$isMultipleImageFormatFeatureEnabled = $sfContainer->get('prestashop.core.admin.feature_flag.repository')->isEnabled(FeatureFlagSettings::FEATURE_FLAG_MULTIPLE_IMAGE_FORMAT);
解决思路
  • 确保Symfony容器正确初始化:错误核心是SymfonyContainer::getInstance()返回null,说明执行环境未完成PrestaShop的完整初始化。自定义脚本开头需加载核心配置文件,保证容器实例化:
    require_once(dirname(__FILE__).'/../config/config.inc.php');
    require_once(dirname(__FILE__).'/../init.php');
    
  • 临时跳过多图格式检测:若容器初始化正常,可直接禁用该功能检测,避免调用缺失的服务。将原代码替换为:
    // 替换原检测代码
    $isMultipleImageFormatFeatureEnabled = false;
    
  • 修复核心组件依赖:检查PrestaShop安装完整性,确保prestashop.core.admin.feature_flag.repository服务已正确注册。可尝试重新覆盖安装PrestaShop 8.1.1的核心文件,或升级到最新的8.1.x补丁版本(该问题可能属于官方已修复的bug)。
  • 手动实现图片删除逻辑:如果以上方案无效,可绕过默认的deleteImages()方法,直接查询产品关联的图片记录,手动删除图片文件与数据库条目,避开报错的代码段。

内容的提问来源于stack exchange,提问作者johny b. good

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 13:19:54