【发布时间】:2021-01-11 12:04:42
【问题描述】:
我在服务器上的 HTML 文件中有以下代码,其中包含两个 B64 图像字符串(为了便于阅读而被截断)(我在 Debian Stretch 上使用 PHP7.0.33)。 我通过更改字符串中的字母来模拟传输错误。 如果我更改前 33 个字符中的任何一个, imagecreatefromstring() 只会终止程序,而不会被 catch 块捕获,也不会显示任何错误,如输出所示。
有谁知道我可以做些什么来捕捉这个错误?
谢谢 德里克
程序输出是...
开始
过程...很好
图像/JPEG
好的
假...好
完成图像...很好
.......................
处理...不好
图像/JPEG
好的
<?php
echo "Start<br><br><br>";
$Good ="/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAIBAQIBA...
$Bad ="/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDBAIBAQIBA
<----CHANGE A to B
try
{
echo "Process...Good<br>";
$D2=base64_decode($Good,true);
$f = finfo_open();
echo finfo_buffer($f, $D2, FILEINFO_MIME_TYPE);
finfo_close($f);
echo"<br>OK here";
if (@imagecreatefromstring($D2)===false)
{
echo "<br>true...Good";
}
else
{
echo "<br>false...Good";
}
echo"<br>Finish Image...Good";
}
catch(Throwable $e)
{
echo "<br>In Catch Error...Good";
}
echo"<br>.......................<br>";
try
{
echo "Process...Bad<br>";
$D2=base64_decode($Bad,true);
$f = finfo_open();
echo finfo_buffer($f, $D2, FILEINFO_MIME_TYPE);
finfo_close($f);
echo"<br>OK here";
if (@imagecreatefromstring($D2)===false)
{
echo "<br>true...Bad";
}
else
{
echo "<br>false...Bad";
}
echo"<br>Finish Image...Bad";
}
catch(Throwable $e)
{
echo "<br>In Catch Error...Bad";
}
echo "<br><br><br>Finish";
?>
【问题讨论】:
-
当爸爸连球都不扔的时候,孩子会整天等着抓东西。 (imagecreatefromstring 不会抛出异常。)