Hi,为确保您的账号安全,请大家修改登陆密码为包含大小写字母、标点、数字的复合密码,不要使用过于简单的登陆密码。
您当前的位置:首页 :: CentOS

Centos7 编译安装PHP7最新版与PHP5.6.30共存

时间:2017-06-07 17:41:58  来源:  作者:

 Centos7 编译安装PHP7最新版与PHP5.6.30共存

PHP版本共存思路

Nginx是通过PHP-FastCGI与PHP进行交互的。而PHP-FastCGI运行后会通过文件、或本地端口两种方式进行监听,在Nginx中配置相应的FastCGI监听端口或文件即实现Nginx请求对PHP的解释。

 

既然PHP-FastCGI是监听端口和文件的,那就可以让不同版本的PHP-FastCGI同时运行,监听不同的端口或文件,Nginx中根据需求配置调用不同的PHP-FastCGI端口或文件,即可实现不同版本PHP共存了。

 

下载解压PHP7

官网下载最新源码http://php.net,注意下载的源码,别选择错了

d1d4b96955182ffb8cb31803b2d8aa93.png

图1

点图中的红色部分,然后我选择的是中国的节点

a547d304e7816c66a3977ec1f0a66bf4.png

图2

下载

wget -c -Ophp-7.1.5.tar.gz http://cn2.php.net/get/php-7.1.5.tar.gz/from/this/mirror
tar -xvf php-7.1.5.tar.gz
cd php-7.1.5

在安装之前首先要搞定一些依赖,不过有一些依赖我在安装PHP5.6.30的时候都安装过了,还有少数部分依赖没有安装,那么我也给出全新的依赖谁让我们是伸手党,安装过了重新安装也没啥

yum install libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libcurl libcurl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel gmp gmp-devel libmcrypt libmcrypt-devel readline readline-devel libxslt libxslt-devel

上面的依赖安装好后,那么就是配置一下PHP7 要安装的路径与开启的模块等, 这里要说一下与mysqlq链接的配置,默认的一个配置的路径是 --with-mysql-sock=/tmp/mysql.sock

这是默认路径,在确保mysql启动的状态下看看 这个mysql.sock在不,如果不存在,使用下面命令找一下

find / -name mysql.sock

应该会显示具体的路径,然后把地址替换了上面的配置的地址,如果是阿里云主机有RDS数据库或有专用的数据库服务器,那个参数就可以直接干掉,当然你创建一个软链接也是可以的。

 

编译问题:cc: Internal error: Killed (program cc1)

这个问题是第一次遇到,原来是我的阿里云服务器关掉了swap,内存不够用,就报了这个错。 解决办法很简单,configure时加上--disable-fileinfo参数就可以了。

 

我的配置如下:

./buildconf --force
./configure \
--prefix=/usr/local/php7 \
--exec-prefix=/usr/local/php7 \
--bindir=/usr/local/php7/bin \
--sbindir=/usr/local/php7/sbin \
--includedir=/usr/local/php7/include \
--libdir=/usr/local/php7/lib/php \
--mandir=/usr/local/php7/php/man \
--with-config-file-path=/usr/local/php7/etc \
--with-mysql-sock=/var/lib/mysql/mysql.sock \
--with-mcrypt=/usr/include \
--with-mhash \
--with-openssl \
--with-mysqli=shared,mysqlnd \
--with-pdo-mysql=shared,mysqlnd \
--with-gd \
--with-iconv \
--with-zlib \
--enable-zip \
--enable-inline-optimization \
--enable-sockets \
--enable-soap \
--enable-session \
--with-curl \
--enable-opcache \
--enable-fpm \
--with-fpm-user=www \
--with-fpm-group=www \

执行之个提示:mcrypt.h没有找到,我执行了

yum install libmcrypt libmcrypt-devel

结果告诉我没有找到安装包,无耐只能源码包安装了

返回上一级目录

cd ../

下载libmcrypt源码包

http://sourceforge.NET/projects/mcrypt/files/Libmcrypt/ 看到最新版

wget -c -Olibmcrypt-2.5.8.tar.gz https://downloads.sourceforge.net/project/mcrypt/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz?r=https%3A%2F%2Fsourceforge.net%2Fprojects%2Fmcrypt%2Ffiles%2FLibmcrypt%2F2.5.8%2F&ts=1496822771&use_mirror=jaist
tar -xvf libmcrypt-2.5.8.tar.gz
cd libmcrypt-2.5.8
./configure --prefix=/usr/include/libmcrypt
make && make install
cd ../php-7.1.5

不出意外应该是可以安装成功的

之后再次执行上面配置

看到如下图

23b804d0e691c725aeee409f3bac38a2.png

图3

就表示编译成功了

确定是不是在php-7.1.5目录里

make && make install

安装好后,来设置PHP7的配置文件:php.ini php-fpm.conf和php-fpm启动脚本

cp ./php.ini-production /usr/local/php7/etc/php.ini
cp ./sapi/fpm/php-fpm.conf /usr/local/php7/etc/php-fpm.conf
cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
cp ./sapi/fpm/init.d.php-fpm /etc/init.d/php7-fpm
chmod 755 /etc/init.d/php7-fpm

上面的命令执行后,来修改一下/usr/local/php7/etc/php-fpm.d目录下的www.conf里的 listen = 127.0.0.1:9000为listen = 127.0.0.1:9001

 

因为php5.6.30的php-fpm使用了9000端口,那么PHP7的fpm端口要修改成9001,具体你自己定

 

把php7-fpm加入开机启动

chkconfig --add php7-fpm
chkconfig php7-fpm on

启动php7-fpm

service php7-fpm start
service php7-fpm stop
service php7-fpm restart
service php7-fpm reload

start,启动PHP的FastCGI进程

stop,强制终止PHP的FastCGI进程

quit,平滑终止PHP的FastCGI进程

restart, 重启PHP的FastCGI进程

reload, 重新加载PHP的php.ini

logrotate, 重新启用log文件

 

 

PHP7-fpm重动完成后,来配置一个nginx可以使用PHP7

fastcgi_pass  127.0.0.1:9001;

 

 

举报
收藏0次 / 评论0
评论(0)
还可以输入 2000 个字符
还可以输入 2000 个字符
取消回复
举报×

还可以输入 264 字符

收藏(0)×