我在处理上传到我网站的图片时看到了一些随机错误,其中某些.png文件会导致错误被回显到输出缓冲区,这会将响应搞砸回服务器。
错误是 “使用png_read_image时应该打开隔行处理”
我在某些情况下看到过这种情况,我手动处理上传的文件,现在我也开始在我的Wordpress安装上看到这个。我没有将这个问题标记为Wordpress,因为我怀疑它与wordpress有什么关系,而是它必须是PHP中的一些问题。
我最初在PHP5中看到了这个问题,但自从我升级到PHP7后我也看到了它。我现在运行PHP7.1.9。
到目前为止,谷歌搜索没有返回任何有意义的结果,似乎没有任何特定于PHP的答案,大多数答案说用户需要在上传之前启用源文件的隔行扫描,这是不可接受的Web服务器的立场,因为我无法控制用户上传的内容。上传后图像似乎仍能正常工作,我只需要一种方法来抑制此消息,这样就不会向用户显示错误的错误。错误消息确实提到了使用png_read_image(),但是我没有直接在任何地方调用此函数。也许是在内部调用它,但这使得调试非常困难。我能说的最好的是它与imagepng()或imagecreatefrompng()有关。
现在我正在前端解决这个问题,我在尝试解析响应之前删除了错误文本。
我很抱歉,如果这有点缺乏细节,但我真的不知道现在还能提供什么。
答案 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处理某些图片后,消息消失了,但是似乎有一种解决方法,请参见以下说明: