php 编译指定libiconv,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,PHP升级编译出错 libiconv_open及 apache libiconv的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: fopen -- 打开文件或者 URL
- 下一篇: LeetCode刷题过程中的一些小tip