如何处理 php 7 中的“gd-png: fatal libpng error: Read Error: truncated data”

2024-04-28

我使用 php 7.0.22 (Ubuntu 17.04)

当一些用户上传带有截断数据的 PNG 时,我使用:

$a = imagecreatefrompng($path);

然后我崩溃了:

Fatal error: imagecreatefrompng(): gd-png: fatal libpng error: Read Error: truncated data in ###.php on line ###

我尝试使用

try{...code...}catch(\Throwable $e){...echo...}.

and

$a = @imagecreatefrompng($path);

但脚本只是因为相同的错误消息而终止。 用于imagecreatefromstring(file_get_contents($path))有相同的结果。

我对 PNG 的验证:我使用函数getimagesize($filename)回报Array ( [0] => 1045 [1] => 734 [2] => 3 [3] => width="1045" height="734" [bits] => 8 [mime] => image/png )

我该如何处理函数imagecreatefrompng() or imagecreatefromstring()带有截断的数据 PNG 文件?

UPD:这是 Ubuntu 上的 PHP7 错误https://bugs.php.net/bug.php?id=73986 https://bugs.php.net/bug.php?id=73986糟糕的作品制作方法:

$output = `php -r "imagecreatefrompng('$fname');" 2>&1`;
if (!empty($output)){
    return false; // handle error
} else {
    $result = imagecreatefrompng($fname);
}

None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何处理 php 7 中的“gd-png: fatal libpng error: Read Error: truncated data” 的相关文章

  • 如何捕获生成器抛出的异常并恢复迭代?

    我有一个生成器 它将值的集合传递给方法并生成结果 调用的方法可能会返回异常 发生这种情况时 我希望异常转到调用生成器来处理异常的代码 然后继续循环生成器 为了说明这一点 下面是一个生成器的示例 它将产生1 抛出一个 Exception 然后
  • php 中接口的用途是什么?

    如果我在 PHP 中定义一个接口 以及一个创建该接口实例的工厂类 有什么方法可以强制客户端代码仅使用该接口而不使用底层具体类 根据我的理解 客户也可以实际使用底层类中的任何公共函数 字段 这是一个例子
  • 自定义 php 论坛 - 显示新的/未读的帖子

    我自己使用 php 编写了一个自定义论坛脚本 我决定不使用 phpbb 和其他工具 因为我希望我所做的事情具有 100 的灵活性 不过我遇到了一个问题 如何向用户显示帖子是否是新的 未读的 我想到了两种解决方案 1 饼干 2 数据库 我不想
  • Google Analytics PHP(发送信息)

    大意 我正在开发一个项目 我需要使用 Google Analytics 服务器端 我不需要检索信息 但我需要发送信息 我最终可以发送 js 脚本客户端 但在这种情况下它不是一个选项 以下大多数链接都非常旧 2012年 检索 不是我需要的 我
  • PDO 库比本机 MySQL 函数更快吗?

    我已经阅读了几个与此相关的问题 但我担心它们可能已经过时 因为自这些问题得到解答以来 更新版本的 PDO 库已经发布 我编写了一个 MySQL 类 它构建查询并转义参数 然后根据查询返回结果 目前这个类正在使用内置的mysql函数 我很清楚
  • 是否可以共享 Symfony2 安装(一台服务器上的多个网站 [域])

    我想在一个根 服务器 下托管多个基于 Symfony2 的网站 是否可以共享 symfony 自己的文件 供应商等 有人知道教程吗 管理起来困难吗 AFAIK Symfony 安装大约有 600MB 我不想以冗余方式保存它 我看起来确实有可
  • 命令运行时从 shell_exec 命令获取输出

    我正在编写一个 PHP 脚本网页 该网页旨在接受先前上传到服务器的 JFFS2 图像的文件名 然后 该脚本将使用映像重新刷新服务器上的分区 并输出结果 我一直在用这个 tmp shell exec update flash v filena
  • PHP 变量、方法、类等名称中的有效字符是什么?

    您可以在 PHP 变量 常量 函数 方法 类等名称中使用哪些有效字符 说明书上有some http php net manual en language oop5 basic php mentions http www php net ma
  • 使用 LIKE 和撇号的 Mysql 查询问题

    所以我有一个有趣的问题 我从未遇到过 并且似乎找不到太多有关纠正该问题的信息 我有一个庞大的数据库 里面有大量的数据 相当于 10 年的数据 并试图对其进行搜索 现在搜索功能运行良好 但最近有人让我注意到一个 错误 如果你愿意的话 我尝试对
  • 在 PHP 5 中使用 Schematron 验证 XML

    我在验证 XML 时遇到问题图解器 http en wikipedia org wiki Schematron 在我的代码中 我将 XML 和 XSL 作为 DOMDocument 对象加载 并尝试进行转换 domSche new DOMD
  • PHP date_sun_info 错误时间

    我正在尝试使用 PHPdate sun info函数获取全天太阳某些位置的时间信息 目前我正在使用类似于中的代码文档 http php net manual en function date sun info php sun info da
  • CMS:将自定义页面存储为文件或 MySQL 数据库中?

    我正在 PHP 中创建一个自定义 CMS 从头开始编写 并且想知道是否应该将用户创建的页面存储为文件或存储在 MySQL 数据库中 内容全部是 HTML 代码 至少目前是这样 我无法决定该做什么 因为用 php 编写文件似乎存在安全风险 并
  • 如何在 php 中为每个其他函数调用自动调用函数

    Class test function test1 echo inside test1 function test2 echo test2 function test3 echo test3 obj new test obj gt test
  • 使用 PHP 和 jSON 从 MySQL 获取 UIImage

    我正在开发一个小型新闻阅读器 它通过对 URL 执行 POST 请求来从网站检索信息 响应是一个带有未读新闻的 JSON 对象 例如 应用程序上的最新新闻的时间戳为 2013 03 01 当用户刷新表时 它会发布 domain com ap
  • 使用mysql数据按高低价格排序

    这是我所拥有的以及我想做的 我的 MySql 数据库中有 12 个项目 4 个产品为 4 99 4 个产品为 3 99 4 个产品为 2 99 我意识到我可以像这样查询数据库 它会给我一个该价格的产品列表
  • 正则表达式:如何表达没有下划线的 \w

    有没有简洁的表达方式 w but without 即 w 中包含的所有字符 除了 我问这个是因为我正在寻找最简洁的方式来表达域名验证 域名可以包含小写和大写字母 数字 句号和破折号 但不能包含下划线 w 包括以上所有内容 加上下划线 那么
  • 根据产品属性在 Magento 中创建购物车规则

    我在一个类别中有产品 针 有些以 100 支为一包出售 有些以 500 支为一包出售 盒子中的针数被设置为产品属性 我想根据购物车中的针总数应用购物车规则 F x 如果您购买 1000 2000 根针头 无论 500 100 包的组合如何
  • 如何在刀片模板中通过引用 @include 来传递变量?

    在 Laravel 4 2 设置中 我在模板中有一个变量 我希望在多个包含之间共享该变量 主刀 This is the variable include header lt in header blade I often use tabin
  • 多个数据库连接

    我有三张桌子 categories content info and content The categories表包含类别的id及其 IDparent类别 The content info包含两列 entry id帖子的 ID 和cat
  • 未找到教义列:1054“字段列表”中未知列“s.features”

    我在站点表中添加了一个新列 features 并使用 Doctrine 重新生成了模型 此代码导致错误 siteTable Doctrine Core getTable Site site siteTable gt findOneByNam

随机推荐