imagepng(): gd-png error: cannot allocate libpng main struct
线下环境是用wamp搭的,开发过程中,全程验证码显示都是没问题的,而线上环境是用oneinstack安装的环境,我对比了两个环境的GD支持情况如下面,基本上没有差别,但就是当我把程序上传到线上测试的时候,这个验证码就死活不出来,直接报了如题或如下的完整错误信息。
GD扩展对比图:
线上环境测试时的报错信息:
imagepng(): gd-png error: cannot allocate libpng main struct
网上能搜索到的方法都试过了都没用,比如:
1、试了在生成验证码之前使用ob_end_flush或是ob_clean,加了同样报错
2、试了去除BOM的因素(但运行去除BOM的文件时没有检测出存在BOM的文件)
3、重新编译安装了GD扩展,结果也是报错
现在唯一没做的就是重新安装PHP了,不晓得是不是要重新安装环境才能解决问题,我的线上PHP版本是7.3.10,线下版本是7.3.4,也都是NTS版本,唯一不同的是线下环境用的WAMP,而线上用的是LNMP。
如果有知道问题所在,麻烦告知一下,真是都整了两天多了,都快崩溃啦!5555....
第1条附言·5年前
很高兴的跟大家说,解决了,是使用重装PHP办法解决的。
- 把之前装的gd/libpng/libjpeg/freetype/libxml2及其devel版用YUM卸载
- 再使用YUM把libpng/libjpeg/freetype/libxml2及其devel版重新装上
- 下载最新版的libgd编译安装并指定了安装的路径
- 最后装了PHP搞定,测试了验证码可用了
目前共有 3 条回复