3

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

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

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

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

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

' @' 不应该抑制此错误消息并false按照文档中的说明让函数返回吗?如何告诉 PHP 我知道可能会发生错误并且不会中断执行?

4

2 回答 2

7

您可以mime_content_type在文件上使用。

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

这将确保图像是文件和 PNG。

于 2011-01-18T09:23:58.863 回答
2

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

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

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

在这里查看更多

于 2011-01-18T09:25:39.593 回答