imagecreatefromjpeg() 在升级到 PHP 7.4 后停止工作,而 imagecreatefrompng() 和 imagecreatefromgif() 继续正常工作

问题描述

我对 PHP 中的 imagecreatefromjpeg() 感到奇怪。 它在我的一个脚本中返回一个 Uncaught Error: Call to undefined function 没有任何明显的原因。 它是我编写并正在测试的 PHP 类的一部分。我使用扩展名来识别此测试环境中的文件类型,因为我使用的是手动传递给函数文件

switch ($extension) {
  case "png":
     $img_o = @imagecreatefrompng($tmpname);
     $img_g = imagescale($img_o,$nw,$nh,IMG_BICUBIC_FIXED);
     imagepng($img_g,$tmpname);
     break;
  case "gif":
     $img_o = @imagecreatefromgif($tmpname);
     $img_g = imagescale($img_o,IMG_BICUBIC_FIXED);
     imagegif($img_g,$tmpname);
     break;
  default:
     $img_o = @imagecreatefromjpeg($tmpname);
     $img_g = imagescale($img_o,IMG_BICUBIC_FIXED);
     imagejpeg($img_g,$tmpname);
     break;
}

奇怪的是,imagecreatefrompng()imagecreatefromgif() 都能完美运行。我检查了 GD2 是否已安装并启用(确实如此),但其他两个功能有效的事实让我认为问题出在其他地方。

代码升级PHP 7.4.18 之前可以使用

完整的错误信息是

PHP Fatal error: Uncaught Error: Call to undefined function SL\\imagecreatefromjpeg()

我还认为这可能与从命名空间类内部调用函数有关,但在这种情况下,其他 2 个函数也应该抛出错误

你知道如何解决这个问题吗? 先感谢您,

解决方法

感谢您的输入,我终于解决了,即使我知道该解决方案不是最优雅的……完全删除然后重新安装 gd 解决了问题。 我不知道为什么以前的安装被破坏了,但新的安装有效。 谢谢,