在CentOS环境中,有时我们需要并行运行多个版本的PHP,以便进行开发测试或者部署不同的应用程序。本文将详细介绍如何在CentOS下安装和管理多版本PHP,并介绍如何通过配置Nginx来实现并行运行。

安装多版本PHP

1. 准备工作

首先,确保你的CentOS系统已经安装了EPEL仓库,因为Remi仓库提供了多版本的PHP。

sudo yum install epel-release

2. 安装Remi仓库

Remi仓库是一个提供多个PHP版本的仓库,它支持CentOS 7.x。

sudo yum install remi-release

3. 安装特定版本的PHP

以PHP 7.4和PHP 8.0为例,我们可以同时安装这两个版本的PHP。

sudo yum-config-manager --enable remi-php74
sudo yum-config-manager --enable remi-php80
sudo yum install php74 php74-php-fpm php80 php80-php-fpm

4. 验证PHP版本

安装完成后,可以通过以下命令验证PHP版本:

php -v

配置Nginx支持多版本PHP

1. 安装Nginx

如果Nginx尚未安装,可以使用以下命令进行安装:

sudo yum install nginx

2. 配置Nginx

为了使Nginx支持多个版本的PHP,我们需要修改Nginx的配置文件,使其能够根据请求的路径选择对应的PHP-FPM进程。

sudo vi /etc/nginx/conf.d/default.conf

添加以下配置:

location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass   127.0.0.1:9000; # PHP 7.4 FPM
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
}

3. 配置PHP 8.0 FPM

为了支持PHP 8.0,我们需要修改php-fpm的配置文件。

sudo vi /etc/opt/remi/php80/php-fpm.d/www.conf

修改以下配置项:

user = nginx
group = nginx
listen = /var/run/php80/php-fpm.sock

4. 重启Nginx和php-fpm

sudo systemctl restart nginx
sudo systemctl restart php80-php-fpm

切换PHP版本

如果需要切换PHP版本,可以修改Nginx配置文件中对应的fastcgi_pass行,指向不同版本的php-fpm。

sudo vi /etc/nginx/conf.d/default.conf

fastcgi_pass指向相应的php-fpm版本:

fastcgi_pass   127.0.0.1:9000; # PHP 7.4 FPM

或者

fastcgi_pass   127.0.0.1:9001; # PHP 8.0 FPM

重启Nginx和php-fpm:

sudo systemctl restart nginx
sudo systemctl restart php80-php-fpm

通过以上步骤,你可以在CentOS下轻松切换并并行运行多个版本的PHP。