可怕的“警告:imagecreatefromjpeg():“/tmp/filename”不是/phpfile中的有效JPEG文件,php on line xxx”

cunj1qz1  于 2023-04-28  发布在  PHP
关注(0)|答案(4)|浏览(151)

当有人上传图片到我们的网站时,我收到了这样的警告:
警告:imagecreatefromjpeg()[function.imagecreatefromjpeg]:gd-jpeg:JPEG库报告不可恢复的错误:在/home/pathremoved/includes/snapsutils中。php在线220
警告:imagecreatefromjpeg()[function.imagecreatefromjpeg]:“/tmp/phpiw 4 MFk”不是/home/pathremoved中的有效JPEG文件。php在线220
注意:imagesx():提供的参数不是/home/pathremoved中的有效图像资源。php在线222
public void online():提供的参数不是/home/path removed中的有效映像资源。PHP在线223
警告:imagecreatetruecolor()[function.imagecreatetruecolor]:/home/pathremoved中的图像尺寸无效。php在线240
注意:imagecopyresampled():提供的参数不是/home/path removed中的有效映像资源。PHP在线242
这只发生在某些图像,当在任何程序中打开时都是可以的,它甚至上传到我在localhost上的网站版本也没有问题。我在网上搜索了一下但没发现什么结论..
注意php upload_max_size是5 M,post_max_size是5 M。这不是上传或内存问题。我已经测试了4 M图像没有问题。
任何帮助感激。

oogrdqng

oogrdqng1#

在Google上搜索后,我找到了this bug report。看起来GD库比其他程序对有错误的JPEG文件的容忍度更低。建议的解决方案是在处理图像之前设置GD忽略JPEG错误,如下所示:

ini_set("gd.jpeg_ignore_warning", 1);

希望这对你有用。你可能遇到的另一个潜在问题是内存。看来GD在内存中存储所有的图像一旦被打开后都是位图。这意味着一个5MB的图像实际上会消耗比单个PHP线程所允许的更多的内存,从而导致致命错误。我有这个问题与一些图像上传,并已减少最大文件大小,我允许绕过这个问题。
祝你好运,希望这能有所帮助。

1tu0hz3e

1tu0hz3e2#

我也面临同样的问题。
我们使用下面的代码来解决这个问题,它为我工作,

...
$image = @ImageCreateFromJpeg($image_name);
if (!$image)
{
   $image= imagecreatefromstring(file_get_contents($image_name));
}
...

希望这对你有帮助。..:)

1tuwyuhd

1tuwyuhd3#

在www.example中看到这个bug www.example.com
https://bugs.php.net/bug.php?id=72404
他们建议:

$image = @ImageCreateFromJpeg($image_name);

if (!$image){$image= imagecreatefromstring(file_get_contents($image_name));}
wn9m85ua

wn9m85ua4#

这个图像会导致对Firefox中的服务器的无休止的请求(3.6.10)。Firefox说它包含错误。

相关问题