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

时间:2010-10-10 18:00:06

标签: php image image-processing file-upload upload

当有人将图片上传到我们的网站时,我一直收到此警告:

  

警告:imagecreatefromjpeg()   [function.imagecreatefromjpeg]:   gd-jpeg:JPEG库报告   不可恢复的错误:in   /home/pathremoved/includes/snapsutils.php   在第220行

     

警告:imagecreatefromjpeg()   [function.imagecreatefromjpeg]:   '/ tmp / phpiw4MFk'不是有效的JPEG   文件在/home/pathremoved.php上   220

     

警告:imagesx():提供的参数   不是有效的图像资源   第222行/home/pathremoved.php

     

警告:imagesy():提供的参数   不是有效的图像资源   第223行/home/pathremoved.php

     

警告:imagecreatetruecolor()   [function.imagecreatetruecolor]:   图片尺寸无效   第240行/home/pathremoved.php

     

警告:imagecopyresampled():   提供的参数不是有效的图像   /home/pathremoved.php上的资源   第242行

这只发生在某些图像上,当在任何程序中打开时都可以,它甚至上传到我在localhost上的网站版本没有问题...我google了一下但没有找到结论... < / p>

注意php upload_max大小为5M,post_max_size为5M。这不是上传或内存问题。我已经测试了没有问题的4M图像。

任何帮助表示感谢。

3 个答案:

答案 0 :(得分:16)

在Google上进行了一些挖掘之后,我找到了this bug report。似乎GD库对错误的JPEG文件的容忍度低于其他程序。建议的解决方案是在处理图像之前将GD设置为忽略JPEG错误,如下所示:

ini_set("gd.jpeg_ignore_warning", 1);

希望这对您有用。您可能遇到的另一个潜在问题是与记忆有关。看起来GD一旦打开就将所有图像保存在内存中作为位图。这意味着5MB映像实际上可以比允许单个PHP线程消耗更多内存,从而导致致命错误。我有一些图片上传的问题,不得不减少我允许解决问题的最大文件大小。

祝你好运,希望有所帮助。

答案 1 :(得分:2)

我也面临同样的问题。

我们使用下面的代码来修复此问题,它对我有用,

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

希望这有助于你...... :)

答案 2 :(得分:-2)

此图像在Firefox(3.6.10)中导致对服务器的永不停止的请求。 Firefox说它包含错误。