在 Ubuntu 上切换 PHP 版本,常见做法有 update-alternatives(CLI) 和 禁用/启用 Apache/Nginx 模块(Web) 两种场景。下面按常用情况给你一个完整说明。
php -v
ls /usr/bin/php*
update-alternatives 切换 CLI 的 PHP 版本(命令行)sudo update-alternatives --config php
输出示例:
There are 3 choices for the alternative php (providing /usr/bin/php).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/bin/php8.1 81 auto mode
1 /usr/bin/php7.4 74 manual mode
2 /usr/bin/php8.0 80 manual mode
3 /usr/bin/php8.1 81 manual mode
输入编号回车即可切换。
检查:
php -v
sudo update-alternatives --config phpize
sudo update-alternatives --config php-config
假设从 PHP 7.4 切换到 8.1:
sudo a2dismod php7.4
sudo a2enmod php8.1
sudo systemctl restart apache2
查看当前加载模块:
apache2ctl -M | grep php
Nginx 使用 PHP-FPM,切换方式不同。
ls /run/php/
sudo systemctl stop php7.4-fpm
sudo systemctl start php8.1-fpm
sudo systemctl enable php8.1-fpm
编辑站点配置(如 /etc/nginx/sites-available/default):
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
重启 Nginx:
sudo systemctl restart nginx
sudo apt install php7.4 php8.1 php8.2
然后按需切换 CLI / Web 使用版本即可。
| 功能 | 命令 |
|---|---|
| 切换 CLI PHP | update-alternatives --config php |
| Apache 切换 | a2dismod phpX.X && a2enmod phpY.Y |
| Nginx 切换 | 修改 fastcgi_pass |
| 查看 PHP 模块 | php -m |
| 查看 PHP 配置 | php --ini |
php -v 没变?update-alternatives✅ 正常
update-alternatives如果你愿意,可以告诉我:
我可以给你 精确到命令级别 的方案。