PHP升级编译出错 libiconv_open及 apache libiconv

昨天和运维同事,把PHP升级到5.6的,一直编译出错提示:

首先是libiconv_open,按网上的方法解决后,重启apache的时候再报libphp5.so: undefined symbol: libiconv,导致apache重启不了。

网上对这个错误:undefined reference to libiconv_open,有两个解决方法

第一种方法:

后configure后 

make ZEND_EXTRA_LIBS='-liconv'

第二种方法:

直接修改 Makefile ,在这个文件大约77行中

EXTRA_LIBS = ..... -lcrypt

在最后加上 -liconv,例如:

EXTRA_LIBS = ..... -lcrypt -liconv

加好过会,重启apache的时候,报这个错:

Cannot load modules/libphp5.so into server: /usr/local/apache/modules/libphp5.so: undefined symbol: libiconv

重启报这个错。

这个时候我想到,按上面的两方法的时候,编译一直会出现警告。都忽略掉了,现在看来还是iconv库没有找到。

不如在configure的时候指定iconv目录

最终解决方法如下:

#wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz
#tar -zxvf libiconv-1.13.1.tar.gz
#cd libiconv-1.13.1
# ./configure --prefix=/usr/local/libiconv
# make
# make install

这个时候再编译php指定目录 --with-iconv=/usr/local/libiconv:

#./configure --prefix=/usr/local/php5.6 --with-config-file-path=/usr/local/php5.6/etc --with-apxs2=/usr/local/apache/bin/apxs --disable-fileinfo --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-iconv-dir --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-exif --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-ftp --with-gettext --enable-soap --disable-ipv6 --disable-debug --enable-opcache --with-iconv=/usr/local/libiconv CC=gcc44 CXX=g++44

#make
#make install

编译中的警告再也没有出现。编译很快完成,再重启apache成功~

你可能感兴趣的:(PHP升级编译出错 libiconv_open及 apache libiconv)