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
ls -l /application/
cp /software/php-5.3.27/php.ini-production /application/php/lib/php.ini
之所以要拷贝production这个配置文件,是因为这个是生产环境的配置文件,还有另一个配置文件是开发环境,开发环境的就是要能多看一些参数,但是这对于生产环境并不安全。
cp php-fpm.conf.default php-fpm.conf
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
后面总结一些网上的报错。
安装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