编译安装php5.6或php7

下载源码

php官网下载地址

安装php依赖包

#Centos
yum install libjpeg libjpeg-devel libpng libpng-devel curl autoconf automake libtool re2c flex bison libxml2-devel openssl openssl-devel bzip2 bzip2-devel curl curl-devel freetype freetype-devel libmcrypt libmcrypt-devel libXpm* freetype* libjpeg* libpng*
#ubuntu
apt-get install gcc libxml2-dev make automake autoconf libtool bison flex libbz2-dev  curl libcurl4-gnutls-dev libjpeg-dev libpng-dev libtool-bin libcurl3-dev libmcrypt-dev libmysql++-dev libxslt1-dev

开始编译

./configure --prefix=/work/app/php5.6  --with-config-file-path=/work/app/php5.6  --with-mysql  --with-pdo-mysql --enable-mysqlnd --with-mysqli --enable-dba --with-fpm-user=www-data --with-fpm-group=www-data --enable-fpm --enable-zip --with-zlib --with-bz2 --with-mcrypt --enable-pcntl --enable-mbstring --enable-bcmath --enable-xml --with-mhash --with-xsl --with-gettext --with-gd --with-png-dir  --with-freetype-dir  --with-jpeg-dir --with-xpm-dir --with-pear --enable-opcache --enable-sockets  --with-xmlrpc --enable-soap --with-curl  --with-openssl
 
#mysql与数据库
--with-mysql  --with-pdo-mysql --enable-mysqlnd --with-mysqli --enable-dba

#fpm
--with-fpm-user=www-data --with-fpm-group=www-data --enable-fpm

#文件与字符串数字数组处理
--enable-zip
--with-zlib
--with-bz2 
--with-mcrypt
--enable-pcntl
--enable-mbstring
--enable-bcmath
--enable-xml
--with-mhash
--with-xsl
--with-gettext

#图片处理
--with-gd
--with-png-dir 
--with-freetype-dir 
--with-jpeg-dir 
--with-xpm-dir

#其他
--with-pear
--enable-opcache
--enable-sockets  
--with-xmlrpc

#加密与请求
--enable-soap   #xml通信协议
--with-curl 
--with-openssl

ubuntu上curl依赖安装后还是提示安装,此时可能需要手动创建一个软连接

#ubuntu
cd /usr/include
sudo ln -s x86_64-linux-gnu/curl

php7或者低版本php编译可能会遇到openssl相关错误,处理方式为编译openssl并手动指定目录,注意在编译的时候其实无需替换系统openssl,流程如下

#主要命令
wget https://www.openssl.org/source/openssl-1.1.0g.tar.gz
tar zxvf openssl-1.1.0g.tar.gz
cd openssl-1.1.0g
./config --prefix=/work/app/openssl shared
make && make install
#只为编译php不用替换系统的openssl,只需要--with-openssl=/work/app/openssl

其中实测php5.6.0和以下版本需要使用低版本的openssl(openssl-1.0.2.tar.gz)

执行make

# make && make install  //开始编译,如果编译失败使用 make clean,然后再重新编译
# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
# chmod u+x /etc/init.d/php-fpm

配置

#修改php-fpm的配置文件,位于/work/app/php5.6/etc
mv php-fpm.conf.default  php-fpm.conf
#修改php.ini ,取消date.timezone 注释,并修改为
date.timezone = PRC

启动

systemctl enable php-fpm.service
systemctl start php-fpm.service

安装或编译php扩展

有两种方式可以安装php扩展,第一种是使用pecl install xxx 的方式, 第二种是下载扩展源码然后通知执行phpize后比编译获得.so文件

/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install

vim php.ini
extension = "gettext.so"

 

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注