Skip to content

PHP

多版本安装

# 安装EPEL源
yum install -y epel-release
# 安装Remi源
yum install -y https://rpms.remirepo.net/enterprise/remi-release-7.rpm
# 安装 yum 包管理器工具
yum install -y yum-utils
# 通过Remi指定PHP版本
yum-config-manager --enable remi-php74
# 安装PHP
yum install -y php74
# 验证安装的PHP版本
/usr/bin/php74 -v
安装 php-fpm
# 查找 php-fpm 的 rpm 包
yum list | grep php-fpm
# 找到对应版本安装即可
yum install php72-php-fpm.x86_64
让 php-fpm 使用 Unix 套接字
vim /etc/opt/remi/php74/php-fpm.d/www.conf 
listen = /tmp/php74-php-fpm.sock
listen.owner = www
listen.group = www
listen.mode = 0660
# user 和 group 改为 www
user = www
group = www
修改 /tmp 目录权限:
find / -name "php74-php-fpm.service" 并修改
PrivateTmp 改为 false
更改 Nginx 配置文件:
vim /usr/local/nginx/conf/nginx.conf
location ~ [^/]\.php(/|$)
{
    try_files $uri =404;
    fastcgi_pass  unix:/tmp/php74-php-fpm.sock; # 更改此处
    fastcgi_index index.php;
    include fastcgi.conf;
}
创建用户 www
# 检查用户是否存在:
id www
# 或
grep 'www' /etc/passwd
# 如果无输出,表示用户不存在。
# 创建用户 'www':
sudo useradd -r -s /sbin/nologin www
重启服务:
systemctl restart php70-php-fpm.service
nginx -s reload

在CentOS 7上安装并切换PHP版本的步骤如下:

  1. 添加Remi仓库
    首先安装EPEL仓库和Remi仓库:

sudo yum install epel-release -y
sudo rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-7.rpm
2. 安装PHP 5.x
启用PHP 5.6仓库并安装:

sudo yum-config-manager --enable remi-php56
sudo yum install php php-mysql php-gd php-mbstring -y
3. 安装PHP 7.x(如尚未安装)
启用PHP 7.x仓库并安装:

sudo yum-config-manager --enable remi-php74  # 假设安装7.4
sudo yum install php php-mysql php-gd php-mbstring -y
4. 配置Apache切换PHP版本
Apache使用mod_php模块,需调整加载的模块。

查找模块路径:
PHP 5.6模块:/usr/lib64/httpd/modules/libphp5.so
PHP 7.x模块:/usr/lib64/httpd/modules/libphp7.so

编辑Apache配置:

sudo vim /etc/httpd/conf.modules.d/10-php.conf
注释当前版本,启用目标版本:
# LoadModule php7_module modules/libphp7.so
LoadModule php5_module modules/libphp5.so
5. 重启Apache生效
sudo systemctl restart httpd
6. 切换命令行PHP版本
使用alternatives管理CLI版本:

sudo alternatives --config php
按提示选择版本编号。

  1. 验证PHP版本
    php -v
    
    访问 http://your-server/phpinfo.php 确认Apache使用的版本。

切换脚本示例
创建脚本简化切换(如switch_php5.sh和switch_php7.sh):

#!/bin/bash
# switch_php5.sh
sudo sed -i 's/^LoadModule php7_module/#&/' /etc/httpd/conf.modules.d/10-php.conf
sudo sed -i 's/^#LoadModule php5_module/LoadModule php5_module/' /etc/httpd/conf.modules.d/10-php.conf
sudo systemctl restart httpd
#!/bin/bash
# switch_php7.sh
sudo sed -i 's/^LoadModule php5_module/#&/' /etc/httpd/conf.modules.d/10-php.conf
sudo sed -i 's/^#LoadModule php7_module/LoadModule php7_module/' /etc/httpd/conf.modules.d/10-php.conf
sudo systemctl restart httpd
赋予执行权限:
chmod +x switch_php*.sh
注意事项
扩展安装:安装每个PHP版本对应的扩展(如php56-php-mysql和php74-php-mysql)。

配置文件:各版本的php.ini位于不同目录(如/etc/opt/remi/php56/php.ini和/etc/opt/remi/php74/php.ini)。

依赖冲突:使用Remi仓库的不同PHP版本包可避免冲突。

切换 PHP 版本:

sudo vim /etc/httpd/conf.modules.d/10-php.conf
sudo systemctl restart httpd

# 切换命令行 PHP 版本
# 注册 PHP 5.6
sudo alternatives --install /usr/bin/php php /opt/remi/php56/root/usr/bin/php 56

# 注册 PHP 7.x(以 7.4 为例)
sudo alternatives --install /usr/bin/php php /usr/bin/php74 74

# 交互式切换版本
sudo alternatives --config php