如何处理因上传有问题的 JPEG 而导致的错误?

发布于 2024-09-28 02:05:49 字数 778 浏览 4 评论 0原文

我有一个公众可以上传 JPEG 的网站。

有人上传了无效的 JPEG,导致网站崩溃。

PHP 说...

imagecreatefromjpeg() [function.imagecreatefromjpeg]:gd-jpeg、libjpeg:可恢复错误:JPEG 文件过早结束

我不确定如何解决这个问题,所以我在 Google 上搜索并找到 此网站。它告诉我添加...

ini_set('gd.jpeg_ignore_warning', 1);

我在我的 index.php (我网站的引导程序,我在其中执行其他 ini_set())中添加了它。

这似乎并没有解决它。

我该如何处理这种无效 JPEG 的情况?我对 INI 集做错了什么吗?我位于共享主机上,因此无法直接更改 php.ini

我正在使用 Kohana 2.3 及其 图像库,但我不认为它是这里确实相关。

I have a website where the public can upload JPEGs.

Someone from the public was uploading an invalid JPEG that was causing the site to crash for them.

PHP said...

imagecreatefromjpeg() [function.imagecreatefromjpeg]: gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file

I wasn't sure how to get around this, so I Googled and found this site. It told me to add...

ini_set('gd.jpeg_ignore_warning', 1);

I added that in my index.php (the bootstrap of my site, where I do other ini_set()).

This didn't seem to fix it.

How can I handle this case of invalid JPEGs? Am I doing something wrong with the INI set? I'm on a shared host so I can't change php.ini directly.

I'm using Kohana 2.3, and its Image library, but I don't think it is really relevant here.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

巡山小妖精 2024-10-05 02:05:51

您通常会像这样使用 imagecreatefromjpeg

$img = @imagecreatefromjpeg($file);
if (!$img) {
    // handle error yourself
}

请注意 imagecreatefromjpeg 前面的 @,它用于抑制错误。不幸的是,我无法告诉您 Kohana 内部是如何做到这一点的,以及是否可以说服它做同样的事情。

You would usually work with imagecreatefromjpeg like this:

$img = @imagecreatefromjpeg($file);
if (!$img) {
    // handle error yourself
}

Note the @ in front of imagecreatefromjpeg, which is used to suppress errors. Unfortunatly I can't tell you how Kohana does this internally and if it could be persuaded to do the same thing.

新雨望断虹 2024-10-05 02:05:50

尝试在命令前添加一个 @ 字符:

$image = @imagecreatefromjpeg("file.jpg");
if(!$image) die("Sorry, bad JPEG");

它很脏并且可能已经过时(更不用说慢),但它可能会使您的代码不会失败。

希望这有帮助!

Try sticking an @ character before the command:

$image = @imagecreatefromjpeg("file.jpg");
if(!$image) die("Sorry, bad JPEG");

It's dirty and probably obsolete (not to mention slow), but it'll probably make your code not fail.

Hope this helps!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文