温馨提示×

怎么在Ubuntu切换PHP版本

小樊
36
2026-07-13 19:45:29
栏目: 编程语言

Ubuntu 上切换 PHP 版本,常见做法有两种:使用 update-alternatives(CLI)针对 Web 服务(Apache / Nginx)切换 PHP-FPM 或模块。下面按场景给你完整说明。


一、前提:已安装多个 PHP 版本

先确认系统里有哪些 PHP 版本:

ls /usr/bin/php*

或:

update-alternatives --list php

如果没有你需要的版本,先安装,例如:

sudo apt update
sudo apt install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt update

# 安装 PHP 7.4 和 PHP 8.2
sudo apt install php7.4 php8.2

二、切换命令行(CLI)PHP 版本(最常用)

方法 1:update-alternatives(推荐)

sudo update-alternatives --config php

输出示例:

There are 2 choices for the alternative php (providing /usr/bin/php).

  Selection    Path             Priority   Status
------------------------------------------------------------
* 0            /usr/bin/php8.2   82        auto mode
  1            /usr/bin/php7.4   74        manual mode
  2            /usr/bin/php8.2   82        manual mode

Press <enter> to keep the current choice[*], or type selection number:

输入数字并回车即可。

验证:

php -v

方法 2:直接设置(不推荐长期使用)

sudo update-alternatives --set php /usr/bin/php7.4

三、Apache 环境下切换 PHP 版本

1️⃣ 禁用当前 PHP 模块

sudo a2dismod php8.2

2️⃣ 启用目标 PHP 模块

sudo a2enmod php7.4

3️⃣ 重启 Apache

sudo systemctl restart apache2

✅ 适合 libapache2-mod-php 模式


四、Nginx 环境下切换 PHP 版本(PHP-FPM)

1️⃣ 查看已安装的 PHP-FPM

ls /run/php/

常见:

php7.4-fpm.sock
php8.2-fpm.sock

2️⃣ 修改 Nginx 配置

编辑站点配置(如 /etc/nginx/sites-available/default):

fastcgi_pass unix:/run/php/php7.4-fpm.sock;

3️⃣ 重启服务

sudo systemctl restart php8.2-fpm
sudo systemctl restart php7.4-fpm
sudo systemctl restart nginx

Nginx 必须和 PHP-FPM 版本一致


五、同时运行多个 PHP 版本(进阶)

  • CLI:用 update-alternatives
  • Web:
    • Apache:不同虚拟主机使用不同 php-fpm
    • Nginx:不同 server 块使用不同 fastcgi_pass

六、常见问题

❓ 切换后 php -v 没变?

  • 你可能只改了 Apache/Nginx,没改 CLI
  • 或终端缓存:hash -r

❓ 出现 502 Bad Gateway?

  • PHP-FPM 没启动
  • sock 文件路径错误

如果你愿意,可以直接告诉我:

  • ✅ Ubuntu 版本
  • ✅ Apache 还是 Nginx
  • ✅ 想从哪个 PHP 切到哪个 PHP

我可以给你 精确到命令级别 的操作方案。

0