imagecreatefrompng 错误 - 如何检测和处理?

发布于 2024-10-12 16:29:16 字数 470 浏览 2 评论 0原文

在我的脚本中,我有以下几行:

$test = @imagecreatefrompng($name);
if ($test) { ... }

我确信 $name 代表磁盘上的现有文件,但我必须处理该文件不是有效 PNG 文件的情况(由于传输错误或由于恶意用户)。我希望通过什么都不做来处理这种情况。

但是,根据上面的代码,我的 PHP 解释器在第一行停止并显示以下错误消息:

imagecreatefrompng() [function.imagecreatefrompng]: 'foobar.png' 不是有效的 PNG 文件

'@' 不应该抑制此错误消息并使函数返回 false 如文档中所述?我如何告诉 PHP 我知道可能会发生错误并且不会中断执行?

In my script, I have the following lines:

$test = @imagecreatefrompng($name);
if ($test) { ... }

I am certain that $name represents an existing file on the disk, but I must handle cases where that file is not a valid PNG file (either because of a transfer error or because of a malicious user). I wish to handle such cases by not doing anything at all.

However, given the above code, my PHP interpreter stops on the first line with the following error message:

imagecreatefrompng() [function.imagecreatefrompng]: 'foobar.png' is not a valid PNG file

Shouldn't '@' have suppressed this error message and had the function return falseas described in the documentation? How can I tell PHP that I know an error might happen and not interrupt the execution?

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

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

发布评论

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

评论(2

薄情伤 2024-10-19 16:29:16

您可以在文件上使用mime_content_type

$image = 'file.png';
if(is_file($image) && mime_content_type($image_type) == 'image/png'){
    // Image is PNG
}else{
    // Not PNG
}

这将确保图像是一个文件并且是 PNG。

You could use mime_content_type on the file.

$image = 'file.png';
if(is_file($image) && mime_content_type($image_type) == 'image/png'){
    // Image is PNG
}else{
    // Not PNG
}

This will ensure the image is a file and a PNG.

简单气质女生网名 2024-10-19 16:29:16

“@”旨在抑制错误,您可能会收到警告消息。

您可以使用异常来做到这一点,例如请

try {
    $test = imagecreatefrompng($name);
} catch (Exception $e) {
    echo 'Caught exception: ',  $e->getMessage(), "\n";
}

参阅此处

'@' is designed to suppresses errors, and you probably get the warning message.

You can do that using exceptions, e.g.

try {
    $test = imagecreatefrompng($name);
} catch (Exception $e) {
    echo 'Caught exception: ',  $e->getMessage(), "\n";
}

See more here

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