CentOS8 搭建 PHP 多版本共存的环境

分类: 系统
日期: 2021-12-22
浏览: 1303

如何在 CentOS8 中搭建 PHP 环境,不二博客的 CentOS8 搭建 PHP 环境 这篇文章中已经详细的介绍了,这篇文章主要介绍如何搭建 PHP 多版本共存的环境。起因是这样的,朋友的一个项目出了点问题,让我帮忙去看看,然后甩给我一个宝塔地址还有服务器的一些用户信息。因为我根本用不惯这些操作面板,所以直接用 SSH 连接服务器,直接肝了。但是在使用 composer 安装组件时遇到了 PHP 版本问题,一番查找下,发现这台服务器上是 PHP 多版本共存的。这引起了我挺大的兴趣,因为多版本 PHP 共存的需求还是挺多的,查看了宝塔的实现方式后,自己在虚拟机中一顿操作,也实现了 PHP 多版本共存,在此记录一下。

因为个人很喜欢用 oh-my-zsh 所以所有的设置都是在 ~/.zshrc 中,如果不使用 zsh 的话,把 ~/.zshrc 换成 ~/.bashrc 即可!

安装多版本 PHP

CentOS8 搭建 PHP 环境 文章中提到的安装 PHP 的方式是安装单版本的,且安装后就是系统默认的,不过安装多版本时,要稍微变下。

# 安装PHP8.1
dnf install -y php81

# 安装PHP7.4
dnf install -y php74

安装成功后,我们在终端中执行

php -v

会提示没有 php 这个指令,要正确使用 php 指令必须带上版本号

php81 -v
php74 -v

如果觉得这样太麻烦的话,设置一下默认版本即可

vim ~/.zshrc

添加以下内容

# 设置 cli 模式下,默认的 PHP 的版本是 8.1
source /opt/remi/php81/enable

重新加载 ~/.zshrc

source ~/.zshrc

安装扩展

# 安装 PHP 8.1 的扩展 
dnf install -y php81-php-{fpm,bcmath,curl,gd,mysqlnd,pdo,opcache,zip,devel,intl,zlib,mbstring,simplexml,json,dom,openssl}

# 安装 PHP 7.4 的扩展
dnf install -y php74-php-{fpm,bcmath,curl,gd,mysqlnd,pdo,opcache,zip,devel,intl,zlib,mbstring,simplexml,json,dom,openssl}
修改 php-fpm 配置文件,将 apache 修改为 nginx
# PHP 8.1 的 www.conf 的路径
vim /etc/opt/remi/php81/php-fpm.d/www.conf

# PHP 7.4 的 www.conf 的路径
vim /etc/opt/remi/php74/php-fpm.d/www.conf
user = nginx
group = nginx
启动 php-fpm 并设置开机自启动
# 启动 PHP 8.1 的 php-fpm
systemctl enable php81-php-fpm --now

# 启动 PHP 7.4 的 php-fpm
systemctl enable php74-php-fpm --now

如果出现 502 问题,是因为 Nginx 链接 sock 文件无权限。

# PHP 8.1 的 www.conf 的路径
vim /etc/opt/remi/php81/php-fpm.d/www.conf

# PHP 7.4 的 www.conf 的路径
vim /etc/opt/remi/php74/php-fpm.d/www.conf
listen.owner = nginx
listen.group = nginx
listen.mode = 0666
安装 redis 和 swoole 扩展

从 EPEL 存储库安装 php-pecl-redis 包:

参考文档:https://github.com/phpredis/phpredis/blob/develop/INSTALL.markdown#rhel--centos

dnf install php81-php-pecl-redis -y

dnf install php81-php-pecl-swoole -y
查看 PHP 扩展信息
php --ri 扩展名

Nginx 站点配置文件

只要修改以下 www.sock 文件地址就行了

# fastcgi_pass 设置成自己需要的 PHP 版本即可

location ~ \.php$ {
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_pass unix:/var/opt/remi/php81/run/php-fpm/www.sock;
    include fastcgi_params;
}

查看 www.sock 地址

# 查看 PHP 8.1 的 www.sock 地址
cat /etc/opt/remi/php81/php-fpm.d/www.conf | grep www.sock
版权声明
作者:不二
来源:不二博客
文章版权归作者所有,未经允许请勿转载。
共有 0 条评论
赶快发表评论吧~
发表评论