我有一段较旧的代码尝试加载图像文件。因为它不知道它是什么类型,代码试图他们都:在PHP中,为什么imagecreatefromjpeg“不是jpeg文件”更改为致命错误?
$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。
我不明白的是......哇......怎么......为什么......从什么时候开始......呵呵?
即使是official documentation也表示这些函数在无法加载文件时返回FALSE
,并且也显示带有@
运算符的构造。我可以在网上找到任何可以说“不是JPEG文件”的东西是一个致命的错误。它提到的每一处都是一个警告,因为它一直是。为什么现在我得到一个致命的错误?
我的PHP是5.6.30,GD在那里有一切。
你看看[this](http://stackoverflow.com/a/10668155/2518525)和[this](http://stackoverflow.com/a/3901885/2518525)可能值得看在(*处理越野车jpeg图像*)。 – Darren
@达伦 - 这两个链接都讲述了**失败时出现的警告**。可以被抑制和忽略的警告。我得到**致命错误**。另外,我已经说过,它不是一个错误的jpeg - 这是一个PNG,我期望这个功能失败 - 只是不致命。 –