因为要生成png格式的验证码,所以调用了imagepng函数,没想到以前运行正常的函数,居然导致php-cgi程序挂掉了,报出的错误是:
libpng warning: Application was compiled with png.h from libpng-1.5.2
libpng warning: Application is running with png.c from libpng-1.2.44
我在编译gd-2.0.33和php的时候,都是使用了相同参数:--with-png-dir=/home/XXX/lib,按理说应该只会把我自己编译的libpng1.5给链接进来。
用ldd命令查看php-cgi程序,发现同时链接了我自己安装的libpng1.5.2和系统默认安装的/usr/lib64/libpng12.so,看来错误的地方就是链接的时候错误的把libpng1.2链接进来了。于是到我自己安装的lib目录下,继续用ldd查看编译的gd.so程序,里面确实链接了系统默认的libpng,为什么编译的时候with-png=xxx没有生效呢?
于是自己手动在gd下执行了configure函数,发现configure检测过程中出现:
checking for libpng12-config... /usr/bin/libpng12-config
checking for libpng-config... /usr/bin/libpng-config
在我自己安装的libpng1.5.2下面只有libpng15-config和libpng-config,于是修改PATH环境变量,把libpng-config所在目录放在最前面,然后再次configure,发现找到的仍然是系统的libpng1.2,看来gd-2.0.33只能使用libpng1.2系列了,重新下载libpng1.2.46安装,然后把安装后的libpng12-config和libpng-config所在目录放在PATH开头,这次configure,终于找到了我自己编译的libpng。到此问题解决。
libpng版本导致的php问题,libpng warning: Application was compiled with png.h
2013-09-24 20:21:25| 分类: 默认分类 | 标签:libpng warning incompatible png_create_read_stru |举报 |字号大中小 订阅
php test . phplibpng warning : Application was compiled with png . h from libpng - 1.5 . 6libpng warning : Application is running with png . c from libpng - 1.2 . 49libpng error : Incompatible libpng version in application and library[ read_png_file ] png_create_read_struct failed
/usr/ bin / ld : cannot find - lpng12collect2 : ld returned 1 exit statusmake : *** [ sapi / fpm / php - fpm ] Error 1
![libpng版本导致的php问题,libpng warning: Application was compiled with png.h 全是坑 - 李坤山 - 李坤山VS断悬](http://img2.ph.126.net/IHUv3OCA2U1SmaVREu8yEw==/1459729229321493575.jpg)
checking for libpng12 - config ... nochecking for libpng - config ... / usr / local / bin / libpng - config
LIBPNG12_CONFIG = /usr/ bin / libpng12 - configLIBPNG_CONFIG = /usr/ local / bin / libpng - config
LIBPNG12_CONFIG = /usr/local/bin/libpng-configLIBPNG_CONFIG = /usr/ local / bin / libpng - config