ubuntu 22.04 可稳定共存 php 7.4.33 和 8.2.32,需分别管理 cli(用 update-alternatives 切换)和 fpm(独立启停、nginx 按站点显式指定 socket 路径),二者路径隔离、互不干扰。

Ubuntu 22.04 上可以稳定共存 PHP 7.4.33 和 PHP 8.2.32,但需分别管理 CLI 和 Web(FPM)两套环境,不能只靠“装上就自动切换”。关键在于:版本安装、路径隔离、CLI 切换、FPM 独立启停、Web 服务器精准指向。
一、安装两个版本(用 Ondřej PPA)
Ubuntu 22.04 官方源不提供这两个版本,必须添加可信第三方源:
- 先确保已安装 software-properties-common:
sudo apt install -y software-properties-common - 添加 PPA 并更新:
sudo add-apt-repository ppa:ondrej/php -y<br>sudo apt update
- 安装 PHP 7.4.33(含 FPM 和常用扩展):
sudo apt install -y php7.4-fpm php7.4-cli php7.4-mysql php7.4-curl php7.4-gd php7.4-mbstring php7.4-xml php7.4-zip php7.4-bcmath - 安装 PHP 8.2.32(同样带 FPM):
sudo apt install -y php8.2-fpm php8.2-cli php8.2-mysql php8.2-curl php8.2-gd php8.2-mbstring php8.2-xml php8.2-zip php8.2-bcmath
二、配置 CLI 版本切换(用 update-alternatives)
终端执行 php -v 显示哪个版本,由 update-alternatives 控制,与 Web 无关:
- 注册两个版本:
sudo update-alternatives --install /usr/bin/php php /usr/bin/php7.4 74<br>sudo update-alternatives --install /usr/bin/php php /usr/bin/php8.2 82
- 手动选择默认版本:
sudo update-alternatives --config php
按提示输入数字(74 或 82)即可切换 - 验证:
php -v和which php应一致显示所选版本
三、独立管理 FPM 服务(核心区别点)
FPM 是 Web 服务真正调用的后端,每个版本有自己独立的 socket 和进程,互不干扰:
- PHP 7.4 FPM 配置文件在:
/etc/php/7.4/fpm/pool.d/www.conf
监听地址通常为:listen = /run/php/php7.4-fpm.sock - PHP 8.2 FPM 配置文件在:
/etc/php/8.2/fpm/pool.d/www.conf
监听地址通常为:listen = /run/php/php8.2-fpm.sock - 启动/停止命令完全分开:
sudo systemctl start php7.4-fpm<br>sudo systemctl stop php8.2-fpm
- 切勿同时启用两个 FPM 的 www pool(除非项目明确需要多 pool),避免端口或 socket 冲突
四、Nginx 按站点指定 PHP 版本
Nginx 不自动识别 PHP 版本,必须在每个 server 块中显式指定 fastcgi_pass:
- 老项目(如 WendaSNS)用 PHP 7.4:
location ~ \.php$ {<br> fastcgi_pass unix:/run/php/php7.4-fpm.sock;<br> include fastcgi_params;<br> fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;<br>} - 新项目用 PHP 8.2:
location ~ \.php$ {<br> fastcgi_pass unix:/run/php/php8.2-fpm.sock;<br> include fastcgi_params;<br> fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;<br>} - 改完配置后务必重载:
sudo nginx -t && sudo systemctl reload nginx
只要 CLI 和 FPM 各自配对、Nginx 路由准确,两个版本就能长期并行运行,互不影响。不需要卸载旧版,也不依赖全局默认值。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











