經常要用到linux環境下自己編譯安裝php,configure參數繁多,有時候不加註意使用的時候又要重新編譯php,所以將常用的configure命令整理如下。
第一步,安裝依賴包:
yum -y install gcc make gd-devel libjpeg-devel libpng-devel libxml2-devel bzip2-devel libcurl-devel libaio
實際應該中可能還需要安裝mcrypt擴展(典型錯誤:phpmyadmin報錯,無法載入mcrypt擴展)。
要安裝mcrypt擴展,可以使用命令:
yum install libmcrypt-devel
然後再使用命令:
yum install php-mcrypt
這樣就成功安裝mcrypt擴展了,如果報package找不到,需要更新yum源,命令如下:
yum install epel-release //擴展包更新包
yum update //更新yum源
第二步,安裝php:
cd /tmp
wget http://cn2.php.net/get/php-5.6.38.tar.gz/from/cn2.php.net/mirror
tar -zxvf mirror
cd ./php-5.6.38
然後執行命令:
./configure --prefix=/usr/local/php-5.6.38 --with-config-file-path=/usr/local/php-5.6.38/etc --with-bz2 --with-curl --enable-ftp --enable-sockets --disable-ipv6 --with-gd --with-jpeg-dir=/usr/local --with-png-dir=/usr/local --with-freetype-dir=/usr/local --enable-gd-native-ttf --with-iconv-dir=/usr/local --enable-mbstring --enable-calendar --with-gettext --with-libxml-dir=/usr/local --with-zlib --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --with-mysql=mysqlnd --enable-dom --enable-xml --with-libdir=lib64 --enable-pdo --enable-fpm --with-mcrypt --with-openssl
編譯過程有可能報如下錯誤:
checking for known struct flock definition… configure: error: Don’t know how to define struct flock on this system, set –enable-opcache=no
解決方法是:
yum groupinstall "Development tools"
最後分別執行命令:
make
make install
默認情況下,編譯安裝的php沒有php.ini,所以需要複製php.ini-production到/usr/local/php-5.6.38/etc/下面:
mv php.ini-production /usr/local/php-5.6.38/etc/php.ini
編譯常見錯誤:
錯誤1:make: *** [sapi/cli/php] error 1
ext/iconv/.libs/iconv.o: In function `php_iconv_stream_filter_ctor':
/home/king/PHP-5.6.38/ext/iconv/iconv.c:2491: undefined reference to `libiconv_open'
collect2: ld returned 1 exit status
make: *** [sapi/cli/php] Error 1
[root@test php-5.6.38]#
發生「undefined reference to libiconv_open'」之類的錯誤信息,表示在「./configure 」沒抓好一些環境變量值。,錯誤發生點在建立「-o sapi/cli/php」時。
解決方法:編輯解壓包下的Makefile文件,大約77 行左右的地方: EXTRA_LIBS = ..... -lcrypt 在最後加上 -liconv,例如: EXTRA_LIBS = ..... -lcrypt -liconv 然後重新再次 make 即可。
錯誤2:make: *** [ext/phar/phar.php] error 127
/usr/local/src/php-5.6.38/sapi/cli/php: error while loading shared libraries: libiconv.so.2: cannot open shared object file: No such file or directory
make: *** [ext/phar/phar.php]錯誤127
原因:php運行時無法在相應的目錄下找到libiconv.so.2,才會出來這個錯誤,首先確定php運行時在哪個目錄去找這個文件了,找到這個文件後做一個到libiconv.so.2的軟鏈接就可以了。
解決方法:
先找出libiconv.so.2所在的位置,執行find -name libiconv.so.2 結果爲:/usr/lib/libiconv.so.2
然後:ln -s /usr/local/libiconv.so.2 /usr/lib64/
最後再重新編譯即可。