Centos中如何同时安装PHP5.6 PHP7.2两个不同版本的PHP

最近遇上个感冒事儿,系统中有的模块需要PHP7.0,有的模块只能支持到php5.6,很尴尬,没办法,只好研究PHP5.6 php7.2两个不同版本的PHP共存的方法,网上找到一篇文章对我帮助很大,稍作整理如下,希望对大家有所帮助。

php7.2与PHP5.6共存

先安装 php7,正常安装

php7.2 安装完成后,进行 php5.6 的安装

安装 php5

[root@VM_0_2_centos ~]# cd ~
[root@VM_0_2_centos ~]# wget -c http://cn2.php.net/distributions/php-5.6.30.tar.gz
[root@VM_0_2_centos ~]# tar -zxvf php-5.6.30.tar.gz
[root@VM_0_2_centos ~]# cd php-5.6.30/
[root@VM_0_2_centos php-5.6.30]# ./configure  --prefix=/usr/local/php5 --enable-fpm --with-mysql  --with-mysqli --with-zlib --with-curl --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-openssl --enable-mbstring --enable-xml --enable-session --enable-ftp --enable-pdo
[root@VM_0_2_centos php-5.6.30]# make

make 可能会报错:make: *** [sapi/cli/php] error 1 ,

Centos中如何同时安装PHP5.6 PHP7.2两个不同版本的PHP

则使用

[root@VM_0_2_centos php-5.6.30]# make clean
[root@VM_0_2_centos php-5.6.30]# make ZEND_EXTRA_LIBS='-liconv'
Centos中如何同时安装PHP5.6 PHP7.2两个不同版本的PHP

安装

[root@VM_0_2_centos php-5.6.30]# make install

复制 php 配置文件

[root@VM_0_2_centos php-5.6.30]# cp php.ini-production /usr/local/php5/etc/php.ini

已经安装完成,查看版本号

[root@VM_0_2_centos php-5.6.30]# /usr/local/php5/bin/php -v

返回

PHP 5.6.30 (cli) (built: Aug 29 2018 09:09:28) 
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies

配置 php-fpm

[root@VM_0_2_centos php-5.6.30]# cp /usr/local/php5/etc/php-fpm.conf.default /usr/local/php5/etc/php-fpm.conf
[root@VM_0_2_centos php-5.6.30]# vim /usr/local/php5/etc/php-fpm.conf

查找 user 将

user = nobody
group = nobody

改成

user = www
group = www

查找 listen 将

listen = 127.0.0.1:9000

改成

listen = 127.0.0.1:9001
Centos中如何同时安装PHP5.6 PHP7.2两个不同版本的PHP

配置 php-fpm 服务

[root@VM_0_2_centos php-5.6.30]# cp sapi/fpm/php-fpm.service /usr/lib/systemd/system/php5-fpm.service
[root@VM_0_2_centos php-5.6.30]# vim /usr/lib/systemd/system/php5-fpm.service 

将:

PIDFile=${prefix}/var/run/php-fpm.pid
ExecStart=${exec_prefix}/sbin/php-fpm --nodaemonize --fpm-config ${prefix}/etc/php-fpm.conf

改成

PIDFile=/usr/local/php5/var/run/php-fpm.pid
ExecStart=/usr/local/php5/sbin/php-fpm --nodaemonize --fpm-config /usr/local/php5/etc/php-fpm.conf

重新载入 systemd

[root@VM_0_2_centos php-5.6.30]# systemctl daemon-reload

可以设置开机启动:

[root@VM_0_2_centos php-5.6.30]# systemctl enable php5-fpm

返回结果

Created symlink from /etc/systemd/system/multi-user.target.wants/php5-fpm.service to /usr/lib/systemd/system/php5-fpm.service.

启动:

[root@VM_0_2_centos php-5.6.30]# systemctl start php5-fpm

关闭:

[root@VM_0_2_centos php-5.6.30]# systemctl stop php5-fpm

查看状态:

[root@VM_0_2_centos php-5.6.30]# systemctl status php5-fpm

返回

● php5-fpm.service - The PHP FastCGI Process Manager
   Loaded: loaded (/usr/lib/systemd/system/php5-fpm.service; disabled; vendor preset: disabled)
   Active: active (running) since Wed 2018-08-29 09:36:39 CST; 47s ago
 Main PID: 14996 (php-fpm)
   CGroup: /system.slice/php5-fpm.service
           ├─14996 php-fpm: master process (/usr/local/php5/etc/php-fpm.conf)
           ├─14997 php-fpm: pool www
           └─14998 php-fpm: pool www
Centos中如何同时安装PHP5.6 PHP7.2两个不同版本的PHP

配置不同的 nginx 站点使用不用的 PHP 版本

[root@VM_0_2_centos php-5.6.30]# cd /usr/local/nginx/conf/vhost/
[root@VM_0_2_centos vhost]# vim test.liuguofeng.com.conf 
server {
    listen       80;
    server_name  test.liuguofeng.com;
    root         /home/wwwroot/test.liuguofeng.com
    location / {
        index  index.php index.html index.htm;
    }
    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9001;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}
Centos中如何同时安装PHP5.6 PHP7.2两个不同版本的PHP

PHP 5 使用 9001 端口, PHP 7,使用 9000端口。

重载 nginx 服务

[root@lnmp conf.d]# systemctl reload nginx

访问 PHPINFO

Centos中如何同时安装PHP5.6 PHP7.2两个不同版本的PHP
Centos中如何同时安装PHP5.6 PHP7.2两个不同版本的PHP
user = www
group = www
视 nginx.conf 配置; 用户配置这里要注意,如果只是一个版本不需要配置。默认即可。
另外针对php.ini, 我再调试中发现没有启动时加载,所以启动时应该是先加载的PHP7.0;然后在网站才唤醒PHP5.6的 PHP.ini . 通过PHPinfo()了解到显示php.ini并没有读取,这个用作但版本调试的时候,双版本中系统自动启动PHP70的PHP.INI 。

声明:未经上传用户或原创作者授权,请勿作他用。
其他事微信:93547942 协助处理。
砚台酪-18年专业互联网服务咨询 » Centos中如何同时安装PHP5.6 PHP7.2两个不同版本的PHP
在线客服
在线客服
热线电话
QQ客服