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

Magento 2.4.4-p6(PHP8.1)下GD2无法调图:废弃错误求助

Magento 2.4.4-p6升级后GD2图片缩放报错解决方法

问题描述

升级至Magento 2.4.4-p6后,GD2图片适配器无法调整图片大小,触发以下错误:

[2023-11-09T00:29:45.553851+00:00] main.CRITICAL: Exception: Deprecated Functionality: Implicit conversion from float -457.5 to int loses precision in /vendor/magento/framework/Image/Adapter/Gd2.php on line 963 in /vendor/magento/framework/App/ErrorHandler.php:61

报错原因

PHP 7.4及以上版本对「浮点数隐式转换为整数导致精度丢失」的操作新增了废弃警告,而Magento 2.4.4-p6的GD2适配器代码中,未对图片尺寸计算产生的非整数值做显式类型处理,当出现负数半值(如-457.5)时,触发警告并被Magento的错误处理机制判定为异常。

解决方案

临时修复(直接修改核心文件,注意:Magento升级会覆盖此修改)

  1. 定位文件:/vendor/magento/framework/Image/Adapter/Gd2.php
  2. 找到第963行的代码,将涉及浮点数赋值给整数变量的逻辑,改为显式取整。例如:
    • 原代码(示例):$x = $calculatedValue;
    • 修改后:$x = (int)round($calculatedValue);
      使用round()函数确保数值被合理取整,避免精度丢失警告。

长期修复(自定义模块重写适配器,避免升级覆盖)

  1. 创建自定义Magento模块,重写Magento\Framework\Image\Adapter\Gd2类
  2. 在重写的类中,修改第963行对应的代码逻辑,添加显式取整处理(同临时修复的代码调整)
  3. 执行以下命令启用模块并编译:
    bin/magento module:enable YourVendor_YourModule
    bin/magento setup:di:compile
    bin/magento cache:flush
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 11:42:11