如何处理由上传有问题的 JPEG 引起的错误?
Posted
技术标签:
【中文标题】如何处理由上传有问题的 JPEG 引起的错误?【英文标题】:How to handle this error caused by uploading a problematic JPEG? 【发布时间】:2010-10-21 01:24:10 【问题描述】:我有一个公众可以上传 JPEG 的网站。
公众中有人上传了无效的 JPEG,导致网站崩溃。
php 说...
imagecreatefromjpeg() [function.imagecreatefromjpeg]:gd-jpeg,libjpeg:可恢复错误:JPEG 文件过早结束
我不知道如何解决这个问题,所以我用谷歌搜索并找到了this site。它告诉我要添加...
ini_set('gd.jpeg_ignore_warning', 1);
我在我的index.php
(我的网站的引导程序,我在其中做其他ini_set()
)中添加了它。
这似乎没有解决它。
如何处理这种无效 JPEG 的情况?我的 INI 集有什么问题吗?我在共享主机上,因此无法直接更改 php.ini
。
我使用的是 Kohana 2.3,以及它的 Image library,但我认为它在这里并不重要。
谢谢
【问题讨论】:
【参考方案1】:尝试在命令前添加@
字符:
$image = @imagecreatefromjpeg("file.jpg");
if(!$image) die("Sorry, bad JPEG");
它很脏而且可能已经过时(更不用说慢了),但它可能会让你的代码不会失败。
希望这会有所帮助!
【讨论】:
哦,我忘记了错误抑制运算符!谢谢,我知道它不推荐,而且丑得要命,但它可能是我唯一的希望。@
只有在完全不检查故障并允许传播时才会变得丑陋。由于您正在检查下一行的错误情况,因此@
的用法是可以接受的。
@deceze 我很高兴编程之神批准:D
@mattbasta 你在哪里学习了@
函数。我通过阅读一本书来学习 php。它没有这个。搜索 php @
找不到任何东西,我如何找到这些东西?【参考方案2】:
您通常会像这样使用imagecreatefromjpeg
:
$img = @imagecreatefromjpeg($file);
if (!$img)
// handle error yourself
注意imagecreatefromjpeg
前面的@
,用于抑制错误。不幸的是,我无法告诉您 Kohana 在内部是如何做到这一点的,以及是否可以说服它做同样的事情。
【讨论】:
也一样,只是使用了一个变量函数,因为它支持多个驱动程序。以上是关于如何处理由上传有问题的 JPEG 引起的错误?的主要内容,如果未能解决你的问题,请参考以下文章
如何处理由于从 Firestore DB 检索而多次运行的 UseEffect?
Laravel 上传多张带有错误 idback 的图像:“idback 必须是文件类型:jpg、jpeg、png。”