ubuntu php imagecreatefrompng,php – imagecreatefrompng(和imagecreatefromstring)导致无法恢复的致命错误...

当我尝试在不正确的png图像上使用php-gd函数时,我有致命的PHP错误.它似乎是某种bug,因为相应的函数文档(例如imagecreatefrompng):

* @return资源成功时的图像资源标识符,错误时为false.

但是当我尝试使用不正确的图像时,我有:

致命错误:imagecreatefrompng():gd-png:致命的libpng错误:读取错误:第61行的/var/www/common/models/Utils.php中的截断数据

导致此错误的代码很简单:

$handle = imagecreatefrompng($fname);

此字符串后没有代码执行.

尝试从同一个字符串创建图像时,imagecreatefromstring的行为相同.

我不能“修复”这张图片,因为它是用户提供的,所以我需要处理这种情况.

我试着像这样使用try … catch块:

echo 'start'."\n";

try {

imagecreatefromstring($result);

} catch (\Throwable $e) {

echo 'error'."\n";

return null;

}

echo 'success'."\n";

但是脚本输出只是“开始”,然后死掉并显示我上面发布的错误描述.

Ubuntu 16.04.2,PHP 7.0,php7.0-gd扩展,都是最新版本.

所以我无法用try … catch块处理它,我根本不知道如何处理或修复它.有任何想法吗?

UPD:这似乎是环境中非常奇怪的错误,因为当我在Windows下运行相同的代码(使用PHP 7.0)时,它会产生正确的“警告”错误.

解决方法:

派对有点晚了,但我也遇到了这个问题,并且不能等待我的ubuntu LTS中包含bug修复

我找到的唯一干净的解决方法实际上是使用Imagick :: valid()检查图像是否有效.

function imageIsValid($path)

{

try

{

$imagick = new \Imagick($path);

return $imagick->valid();

}

catch (\Exception $e)

{

return false;

}

}

当然,你的服务器/托管需要安装php imagick扩展…

标签:php,php-7,php-gd

来源: https://codeday.me/bug/20190627/1306740.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值