一、安装环境
ubuntu 16.04


一、源码安装前准备工作


1.1、下载源码
下载地址:http://www.php/downloads.php
可自行选择版本,这里我选择的最新版本PHP 7.2.0,下载地址为:http://cn2.php/distributions/php-7.2.0.tar.gz
wget http://cn2.php/distributions/php-7.2.0.tar.gz

1.2、解压
tar -zxvf php-7.2.0.tar.gz

1.3、准备安装目标文件夹
mkdir /usr/local/php
注:也就是源码安装的php到这个路径中

二、编译安装
2.1、配置
cd cd php-7.2.0/


A、如果PHP搭配Apache使用,那么配置如下
./configure --prefix=/usr/local/php \
--with-apxs2=/usr/local/apache2/bin/apxs


注:
/usr/local/apache2/bin/apxs,其中apxs是在安装Apache时产生的,apxs是一个为Apache HTTP服务器编译和安装扩展模块的工具,使之可以用由mod_so提供的LoadModule指令在运行时加载到Apache服务器中


B、如果只是单独安装PHP以及MySQL的扩展,而不安装MySQL服务,那么需要添加下面的配置
--enable-sockets=shared  \
--with-pdo-mysql=shared,mysqlnd 或者 --with-mysql=shared,mysqlnd


此处可以选择使用PHP的 mysql 还是 pdo 扩展,两者选择其一即可

C、启动配置php-fpm

--enable-fpm

总结:执行A或者B此时可能出现错误
configure: error: xml2-config not found. Please check your libxml2 installation.
解决方法:
CentOS
yum install libxml2
yum install libxml2-devel


ubuntu:
apt-get install libxml2
apt-get install libxml2-dev


安装成功后,重新运行上面的./configure命令




示例:我安装的是不带Apache 和 Mysql 服务器,并且使用PDO扩展,那么配置如下

./configure --prefix=/usr/local/php \
--enable-sockets=shared  \
--enable-fpm \
--with-pdo-mysql=shared,mysqlnd


2.2、编译
make


2.3、测试
make test


2.4、安装
make install


2.5、复制ini
cp /php-7.2.0/php.ini-development  /usr/local/php/lib/php.ini
    把原来位于源代码里面的php.ini-development拷贝到/usr/local/php/lib/php.ini下,并且重命名为php.ini

三、把php加入到系统环境变量
echo "export PATH=$PATH:/usr/local/php/bin/php"  >> /etc/profile
source /etc/profile


四、查看php版本
/usr/local/php/bin/php --version

五、安装扩展
首先,请确保已经安装了autoconf,如未安装,请执行apt-get install autoconf
编译完成之后,将会自动把mysql.so放到了默认的php扩展目录下(phpinfo可查看,我的为 /usr/local/php/lib/php/extensions/no-debug-zts-20090626),再修改php.ini
修改php.ini,添加一句extension=mbstring.so


5.1、mbstring扩展
1、进入源码mbstring文件夹
cd /php-7.2.0/ext/mbstring
2、执行生成configure(假设php安装在/usr/local/php目录下)
/usr/local/php/bin/phpize 
3、生成makefile文件
./configure --with-php-config=/usr/local/php/bin/php-config
4、编译&安装
make && make install

5.2、pdo_mysql扩展
1、进入源码pdo_mysql文件夹
cd /php-7.2.0/ext/pdo_mysql
2、执行生成configure(假设php安装在/usr/local/php目录下)
/usr/local/php/bin/phpize 
3、生成makefile文件
./configure --with-php-config=/usr/local/php/bin/php-config
假如你在本地安装了mysql服务,那么需执行下面命令
./configure --with-php-config=/usr/local/php/bin/php-config --with-pdo-mysql=/usr/local/mysql/
4、编译&安装
make && make install
5、修改php.ini,添加一句extension=pdo_mysql.so

5.3、zlib扩展
此扩展进入源码/php-7.2.0/ext/zlib安装会出错,因此先执行下面语句
1、 http://www.zlib/下载zlib源码
wget http://www.zlib/zlib-1.2.11.tar.gz
2、解压,配置,编译,安装
tar -zxvf zlib-1.2.11.tar.gz
cd zlib-1.2.11/
./configure --prefix=/usr/local/zlib
make && make install
3、重新配置、编译、安装PHP,增加参数--with-zlib-dir=/usr/local/zlib
./configure --prefix=/usr/local/php \
--enable-sockets=shared  \
--with-pdo-mysql=shared,mysqlnd \
--with-zlib-dir=/usr/local/zlib 

5.4、curl扩展
方法一:
1、去网站 http://curl.haxx.se/download/ 
下载libcurl源码。我用的版本是curl-7.28.0.tar.gz
    2、解压,配置,编译,安装
tar -zxvf curl-7.28.0.tar.gz
cd usr/src/curl-7.28.0
./configure --prefix=/usr/local/curl;
make && make install
   (3)重新编译php,增加参数--with-curl=/usr/local/curl
./configure --prefix=/usr/local/php \
--enable-sockets=shared  \
--with-pdo-mysql=shared,mysqlnd \
--with-zlib-dir=/usr/local/zlib  \
--with-curl=/usr/local/curl

方法二:
1、安装apt-get install libcurl4-gnutls-dev,如果出错,请先apt-get update
2、进入源码curl文件夹
cd /php-7.2.0/ext/curl
3、执行生成configure(假设php安装在/usr/local/php目录下)
/usr/local/php/bin/phpize 
4、生成makefile文件
./configure --with-php-config=/usr/local/php/bin/php-config
5、编译&安装
make && make install
6、修改php.ini,添加一句extension=curl.so

5.5、pcntl扩展
1、进入源码pcntl文件夹
cd /php-7.2.0/ext/pcntl
2、执行生成configure(假设php安装在/usr/local/php目录下)
/usr/local/php/bin/phpize 
3、生成makefile文件
./configure --with-php-config=/usr/local/php/bin/php-config
4、编译&安装
make && make install
5、修改php.ini,添加一句extension=pcntl.so

5.6、libevent/event 扩展
由于PHP5.7以后只支持event,因此我安装的event,但是libevent的安装方法和event方法一样
扩展依赖于原始的libevent库,必须先把libevent库安装
1)、安装libevent库(http://libevent/)
1. wget https://github/libevent/libevent/releases/download/release-2.1.8-stable/libevent-2.1.8-stable.tar.gz
2. tar -zxvf libevent-2.1.8-stable.tar.gz
3. cd libevent-2.1.8-stable/
4. ./configure --prefix=/usr/local/libevent-2.1.8/
5. make && make install
2)、安装event扩展(http://pecl.php/package/event)
1、wget http://pecl.php/get/event-2.3.0.tgz
2、tar -zxvf event-2.3.0.tgz 
3、cd event-2.3.0/
4、/usr/local/php/bin/phpize 
5、./configure --with-php-config=/usr/local/php/bin/php-config --with-event-libevent-dir=/usr/local/libevent-2.1.8/
如果是libevent
./configure --with-php-config=/usr/local/php/bin/php-config --with-libevent=/usr/local/libevent-2.1.8/
6、make && make install

注:此处安装可能遇到的问题及解决方案
问题1:configure: error: Cannot find OpenSSL's <evp.h>
解决方案:apt-get install libssl-dev

问题2:configure: error: Cannot find OpenSSL's libraries
解决方案:
find / -name libssl.so
输出结果为:/usr/lib/x86_64-linux-gnu/libssl.so
初步判断它可能只会在 /usr/lib/ 下寻找 libssl.so 文件,于是:
ln -s/usr/lib/x86_64-linux-gnu/libssl.so /usr/lib
重新编译安装即通过。

5.7、redis扩展(phpredis)
1、下载源码https://github/phpredis/phpredis/releases
wget https://github/phpredis/phpredis/archive/3.1.4.tar.gz
2、mv 3.1.4.tar.gz phpredis.tar.gz
3、tar -zxvf phpredis.tar.gz
4、cd phpredis-3.1.4/
5、/usr/local/php/bin/phpize 
6、./configure --with-php-config=/usr/local/php/bin/php-config
7、 make && make install 

5.8、openssl扩展
1、进入源码openssl文件夹
cd /php-7.2.0/ext/openssl
2、执行生成configure(假设php安装在/usr/local/php目录下)
cp config0.m4 config.m4
/usr/local/php/bin/phpize 
3、生成makefile文件
./configure --with-php-config=/usr/local/php/bin/php-config
4、编译&安装
make && make install

注:此处安装可能遇到的问题及解决方案
问题1:configure: error: Cannot find OpenSSL's <evp.h>
解决方案:apt-get install libssl-dev

问题2:configure: error: Cannot find OpenSSL's libraries
解决方案:
find / -name libssl.so
输出结果为:/usr/lib/x86_64-linux-gnu/libssl.so
初步判断它可能只会在 /usr/lib/ 下寻找 libssl.so 文件,于是:
ln -s/usr/lib/x86_64-linux-gnu/libssl.so /usr/lib
重新编译安装即通过。

更多推荐

php-7.2.0源码安装及扩展安装