我有一份旧的代码,试图加载一张图片文件。由于它不知道它的类型是什么,所以代码尝试了所有的类型:
$res = @imagecreatefromjpeg($sourceName);
if ( $res === false)
$res = @imagecreatefromgif($sourceName);
if ( $res === false)
$res = @imagecreatefrompng($sourceName);
if ( $res === false) {
$err[] = 'Cannot load file as JPEG, GIF or PNG!';
长期以来,这段代码一直能够完美运行,但是在最近的服务器迁移后,当使用PNG文件时(JPEG文件正常工作),它停止了工作。调查发现,第一行代码就产生了致命错误:
``` Fatal error: imagecreatefromjpeg(): gd-jpeg: JPEG library reports unrecoverable error: Not a JPEG file: starts with 0x89 0x50 ```
由于该行代码有错误抑制运算符,因此脚本仅停止执行,并返回带有空响应的HTTP 200。
我不明白的是...什么...怎么...为什么...从何时开始...嗯?
即使是官方文档也说,这些函数在无法加载文件时会返回
FALSE
,并且在那里也显示了带有@
运算符的结构。我在网上找不到任何关于“不是JPEG文件”的致命错误的信息。无论在哪里提到它,它都是一个警告,就像一直以来一样。为什么我现在会得到致命错误?我的PHP版本是5.6.30,GD已安装并配置正确。