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

She*_*uzz 7 php upload file-upload image image-processing

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

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

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

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

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

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

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

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

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

任何帮助赞赏.

Jer*_*emy 16

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

ini_set("gd.jpeg_ignore_warning", 1);
Run Code Online (Sandbox Code Playgroud)

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

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


小智 5

我也面临同样的问题。

我们使用下面的代码来解决这个问题,它对我有用,

...
$image = @ImageCreateFromJpeg($image_name);
if (!$image)
{
   $image= imagecreatefromstring(file_get_contents($image_name));
}
...
Run Code Online (Sandbox Code Playgroud)

希望这对您有帮助...:)