在实际的PHP开发和服务器运维场景中,修改或切换PHP版本是非常常见的操作。不同的PHP项目对版本的要求存在差异,部分老旧项目依赖低版本PHP的特性,而新开发的项目通常需要高版本PHP的性能优化和新功能支持,因此掌握切换PHP版本的方法很有必要。

通过系统包管理器切换PHP版本(Linux环境)
如果是基于Debian或Ubuntu的Linux系统,可以通过apt包管理器来管理多个PHP版本,首先安装需要的PHP版本对应的相关组件。比如需要安装PHP7.4和PHP8.1,执行以下命令:
# 添加PHP源 sudo apt update sudo apt install software-properties-common sudo add-apt-repository ppa:ondrej/php sudo apt update # 安装PHP7.4相关组件 sudo apt install php7.4 php7.4-fpm php7.4-mysql php7.4-curl # 安装PHP8.1相关组件 sudo apt install php8.1 php8.1-fpm php8.1-mysql php8.1-curl
安装完成后,可以通过update-alternatives工具切换命令行的默认PHP版本:
# 查看当前已安装的PHP版本选项 sudo update-alternatives --display php # 手动选择要使用的PHP版本 sudo update-alternatives --config php
执行选择命令后,终端会列出所有已安装的PHP版本,输入对应版本的序号即可完成命令行PHP版本的切换。
修改Web服务器配置切换PHP版本
Apache服务器切换PHP版本
如果Web服务器是Apache,并且使用libapache2-mod-php模块运行PHP,切换版本时需要禁用旧版本的PHP模块,启用新版本的模块:
# 禁用PHP7.4模块 sudo a2dismod php7.4 # 启用PHP8.1模块 sudo a2enmod php8.1 # 重启Apache服务使配置生效 sudo systemctl restart apache2
如果是使用Apache配合php-fpm运行PHP,则需要修改Apache的虚拟主机配置文件,调整php-fpm的监听配置。比如原来的配置指向PHP7.4的fpm套接字,修改为PHP8.1的套接字:
<VirtualHost *:80>
ServerName example.ipipp.com
DocumentRoot /var/www/html
# 修改前指向PHP7.4的fpm
# ProxyPassMatch ^/(.*.php(/.*)?)$ unix:/run/php/php7.4-fpm.sock|fcgi://localhost/var/www/html
# 修改后指向PHP8.1的fpm
ProxyPassMatch ^/(.*.php(/.*)?)$ unix:/run/php/php8.1-fpm.sock|fcgi://localhost/var/www/html
<Directory /var/www/html>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
修改完成后重启Apache服务即可生效。
Nginx服务器切换PHP版本
Nginx本身不支持直接处理PHP,通常需要配合php-fpm运行PHP程序,切换版本只需要修改Nginx站点配置中fastcgi_pass的参数即可。比如原来配置使用PHP7.4的fpm:
server {
listen 80;
server_name example.ipipp.com;
root /var/www/html;
index index.php index.html;
location ~ .php$ {
include snippets/fastcgi-php.conf;
# 原来的PHP7.4 fpm配置
# fastcgi_pass unix:/run/php/php7.4-fpm.sock;
# 切换为PHP8.1 fpm配置
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
}
}
修改完成后重新加载Nginx配置:
sudo systemctl reload nginx
Windows环境下切换PHP版本
在Windows系统中如果使用集成环境比如WAMP、PHPStudy等,切换PHP版本的操作非常简单,只需要在集成环境的管理面板中找到PHP版本切换选项,选择需要使用的版本后重启服务即可。
如果是手动配置的PHP环境,需要修改系统的环境变量,将需要使用的PHP版本的路径放到环境变量Path的最前面,同时修改Web服务器(比如Apache)的配置文件,将LoadModule php_module指向新版本PHP目录下的对应模块文件,重启服务后就能完成版本切换。
切换PHP版本后的验证方法
切换完成后,需要验证版本是否生效。可以通过命令行执行以下命令查看PHP版本:
php -v
也可以通过创建一个包含phpinfo()函数的PHP文件,放到Web服务器的根目录下,通过浏览器访问该文件,查看页面中显示的PHP版本信息,确认Web服务使用的PHP版本是否正确:
<?php // 输出PHP版本信息 phpinfo(); ?>
如果切换后发现项目运行报错,需要检查对应版本的PHP是否安装了项目依赖的扩展,比如MySQL、Redis等扩展,缺少扩展可以通过包管理器或对应版本的pecl工具安装对应的扩展组件。