【问题标题】:Catch exception from imagecreatefromstring()从 imagecreatefromstring() 捕获异常
【发布时间】: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 不会抛出异常。)

标签: php try-catch


【解决方案1】:

感谢大家观看。

正如CBroe 所说,imagecreatefromstring() 不会抛出异常。

我找到了将这些行添加到代码中的地方

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

现在我收到以下错误...

致命错误:imagecreatefromstring(): gd-jpeg: JPEG library reports unrecoverable error: Bogus DQT index 4 in...

所以程序在没有警告的情况下轰炸了

【讨论】:

    猜你喜欢
    • 2011-05-07
    • 2021-02-28
    • 1970-01-01
    • 1970-01-01
    • 2013-07-13
    • 2016-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多