PHP大家都知道是一門動態的網頁編程語言。LNMP也是大家熟知的一種架構。這裏面Linux nginx mysql 我們都已經安裝好了,現在就剩下php沒有安裝了。
我們要來源碼編譯安裝php5.3.27
環境背景:Linux CentOS release 6.10 (Final)
nginx nginx-1.6.2/ 源碼安裝。安裝目錄 /application/nginx -> /application/nginx-1.6.2/
mysql 二進制包安裝,安裝目錄 mysql -> /application/mysql-5.5.32/
首先編譯安裝一下libiconv-1.14
tar xf libiconv-1.14.tar.gz
ls
mv libiconv-1.14 /application/
ln -s /application/libiconv-1.14/ /application/libiconv
cd /application/libiconv
./configure --prefix=/usr/local/libiconv
make && make install
最後開始編譯安裝php
安裝php之前我們需要安裝它所需要的依賴包。
yum install zlib-devel libxml2-devel libjpeg-devel libiconv-devel \
freetype-devel libpng-devel gd-devel curl-devel libxslt-devel \
libcurl-devdel libmcrypt-devel mhash mcrypt
yum install libxslt-devel libmcrypt-devel
yum install libtool-ltdl.x86_64 libtool-ltdl-devel.x86_64
爲了踏平後面遇到的坑,先做個軟鏈接
ln -s /application/mysql/lib/libmysqlclient.so.18 /usr/lib64/
touch /software/php-5.3.27/ext/phar/phar.phar
然後添加一個路徑 echo "/application/mysql/lib" >>/etc/ld.so.conf.d/mysql.conf
ldconfig
我們下載好的php5.3.27放在/software裏
然後就是解壓,
./configure
這裏的參數 有這些
./configure --prefix=/application/php5.3.27 \ --with-mysql=/application/mysql \ --with-iconv-dir=/usr/local/libiconv \ --with-freetype-dir \ --with-jpeg-dir \ --with-png-dir \ --with-zlib \ --with-libxml-dir=/usr \ --enable-xml \ --disable-rpath \ --enable-safe-mode \ --enable-bcmath \ --enable-shmop \ --enable-sysvsem \ --enable-inline-optimization \ --with-curl \ --with-curlwrappers \ --enable-mbregex \ --enable-fpm \ --enable-mbstring \ --with-mcrypt \ --with-gd \ --enable-gd-native-ttf \ --with-openssl \ --with-mhash \ --enable-pcntl \ --enable-sockets \ --with-xmlrpc \ --enable-zip \ --enable-soap \ --enable-short-tags \ --enable-zend-multibyte \ --enable-static \ --with-xsl \ --with-fpm-user=nginx \ --with-fpm-group=nginx \ --enable-ftp
make
makeinstall
最後最個軟鏈接
ln -s /application/php5.3.27/ /application/php
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
後面總結一些網上的報錯。
安裝PHP過程中,make步驟報錯:(集中網絡上各種解決方法)
(1)
-liconv -o sapi/fpm/php-fpm
/usr/bin/ld: cannot find -liconv
collect2: ld returned 1 exit status
make: *** [sapi/fpm/php-fpm] Error 1
[root@localhost php-5.4.5]#
初步定位是iconv的問題
解決方法 把libiconv卸載掉
進入libiconv源碼目錄執行
#make uninstall
#make clean
# ./configure –prefix=/usr/local/libiconv
# make
# make install
在進入php源碼目錄
./configure php時加上參數--with-iconv=/usr/local/libiconv
(2)
/usr/bin/ld: cannot find -lltdl
collect2: ld returned 1 exit status
make: *** [sapi/cgi/php-cgi] Error 1
解決辦法:安裝包 yum install libtool-ltdl.x86_64 libtool-ltdl-devel.x86_64
(3)
collect2: ld returned 1 exit status
make: *** [sapi/cgi/php-cgi] Error 1
解決辦法:
請安裝lib所需的安裝包
yum install ntp vim-enhanced gcc gcc-c++ gcc-g77 flex bison autoconf automake bzip2-devel ncurses-devel zlib-devel libjpeg-devel libpng-devel libtiff-devel freetype-devel libXpm-devel gettext-devel pam-devel kernel
執行安裝完以後即可解決問題
make
make install
(4)
裝php環境出現
ext/iconv/iconv.o: In function `php_iconv_stream_filter_ctor’:
/usr/local/soft/php-5.2.14/ext/iconv/iconv.c:2491: undefined reference to `libiconv_open’
collect2: ld returned 1 exit status
make: *** [sapi/cgi/php-cgi] Error 1
我的編譯是這樣:
./configure –prefix=/usr/local/php –with-gd=/usr/local/gd –with-jpeg-dir=/usr/local/jpeg –with-png-dir=/usr/local/png –with-freetype-dir=/usr/local/freetype –with-mysql=/usr/local/mysql –enable-fastcgi –enable-fpm
解決辦法:
增加 – - disable-cli
(5)
編譯php時
ext/xmlreader/php_xmlreader.o: In function `zim_xmlreader_XML':
/usr/local/src/php-5.2.8/ext/xmlreader/php_xmlreader.c:1109: undefined reference to `xmlTextReaderSetup'
collect2: ld returned 1 exit status
make: *** [sapi/cgi/php-cgi] Error 1
解決辦法:折騰了半天,最後先make clean 一下,然後把所有libxml2相關的包都裝上重新編譯就ok了。
(6)
運行可能報錯 :我遇到xsl和mcrypt兩個庫報錯,重新安裝一下xsl的dev包就可以:
CentOS : yum install libxslt-devel libmcrypt-devel
Debian : apt-get install libxslt1-dev libmcrypt-dev
如果你有其他的庫不滿足,搜索一下該庫,安裝一下即可,這一步應該沒有太多問題。
編譯:
make
我在Debian下make正常,但在CentOS下卻提示make錯誤,
make: *** [sapi/fpm/php-fpm] Error 1 錯誤中出現 libiconv,應該是iconv包問題,
使用下面的命令替換即可:
make ZEND_EXTRA_LIBS='-liconv'
完成後:
make test
make install