上传某些.png文件时出错“使用png_read_image时应打开隔行处理”

时间:2017-12-19 14:57:32

标签: php php-7.1

我在处理上传到我网站的图片时看到了一些随机错误,其中某些.png文件会导致错误被回显到输出缓冲区,这会将响应搞砸回服务器。

错误是 “使用png_read_image时应该打开隔行处理”

我在某些情况下看到过这种情况,我手动处理上传的文件,现在我也开始在我的Wordpress安装上看到这个。我没有将这个问题标记为Wordpress,因为我怀疑它与wordpress有什么关系,而是它必须是PHP中的一些问题。

我最初在PHP5中看到了这个问题,但自从我升级到PHP7后我也看到了它。我现在运行PHP7.1.9。

到目前为止,谷歌搜索没有返回任何有意义的结果,似乎没有任何特定于PHP的答案,大多数答案说用户需要在上传之前启用源文件的隔行扫描,这是不可接受的Web服务器的立场,因为我无法控制用户上传的内容。上传后图像似乎仍能正常工作,我只需要一种方法来抑制此消息,这样就不会向用户显示错误的错误。

错误消息确实提到了使用png_read_image(),但是我没有直接在任何地方调用此函数。也许是在内部调用它,但这使得调试非常困难。我能说的最好的是它与imagepng()或imagecreatefrompng()有关。

现在我正在前端解决这个问题,我在尝试解析响应之前删除了错误文本。

我很抱歉,如果这有点缺乏细节,但我真的不知道现在还能提供什么。

1 个答案:

答案 0 :(得分:0)

我收到此消息(PHP 7.2.3 + GD):

libpng warning: Interlace handling should be turned on when using png_read_image

和其他一些

libpng warning: tRNS: invalid with alpha channel

libpng warning: iCCP: known incorrect sRGB profile

我的代码将来自不同来源(然后是不同质量)的png图像合并到一张图像中,在使用Photoshop处理某些图片后,消息消失了,但是似乎有一种解决方法,请参见以下说明:

http://php.net/manual/en/function.imageinterlace.php

相关问题