linux源碼編譯php5.6以上自帶php-fpm的configure參數和依賴包

經常要用到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/
最後再重新編譯即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章