在我的脚本中,我有以下几行:
$test = @imagecreatefrompng($name);
if ($test) { ... }
我确信$name
表示磁盘上的现有文件,但我必须处理该文件不是有效PNG文件的情况(由于传输错误或恶意用户)。我希望通过不做任何事情来处理这些案件。
但是,鉴于上面的代码,我的PHP解释器在第一行停止,并显示以下错误消息:
imagecreatefrompng()[function.imagecreatefrompng]:'foobar.png'不是有效的PNG文件
不应该'@
'已经抑制了此错误消息,并且函数返回false
,如文档中所述?如何告诉PHP我知道可能发生错误并且不中断执行?
答案 0 :(得分: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。
答案 1 :(得分:1)
'@'旨在抑制错误,您可能会收到警告消息。
你可以使用例外来做到这一点,例如
try {
$test = imagecreatefrompng($name);
} catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
}
查看更多here