因为要生成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
.
php
libpng warning
:
Application
was compiled
with
png
.
h
from
libpng
-
1.5
.
6
libpng
warning
:
Application
is
running
with
png
.
c
from
libpng
-
1.2
.
49
libpng
error
:
Incompatible
libpng version
in
application
and
library
[
read_png_file
]
png_create_read_struct failed
/usr/
bin
/
ld
:
cannot find
-
lpng12
collect2
:
ld returned
1
exit
status
make
:
***
[
sapi
/
fpm
/
php
-
fpm
]
Error
1
checking
for
libpng12
-
config
...
no
checking
for
libpng
-
config
...
/
usr
/
local
/
bin
/
libpng
-
config
LIBPNG12_CONFIG
=
/usr/
bin
/
libpng12
-
config
LIBPNG_CONFIG
=
/usr/
local
/
bin
/
libpng
-
config
LIBPNG12_CONFIG
=
/usr/local/bin/libpng-config
LIBPNG_CONFIG
=
/usr/
local
/
bin
/
libpng
-
config
233

被折叠的 条评论
为什么被折叠?



