在 Debian 系统中切换 PHP 版本,常见做法取决于你是**命令行(CLI)切换,还是Web 服务器(Apache / Nginx)**切换。下面按场景说明。
dpkg -l | grep php
或:
ls /usr/bin/php*
update-alternatives(推荐)Debian 自带 update-alternatives 管理 PHP:
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
输入编号回车即可切换。
✅ 验证:
php -v
sudo a2dismod php7.4
sudo a2enmod php8.2
sudo systemctl restart apache2
✅ 验证:
php -v
或在 phpinfo() 页面查看。
sudo systemctl status php8.2-fpm
如未安装:
sudo apt install php8.2-fpm
编辑站点配置(示例):
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
}
sudo systemctl restart nginx
sudo systemctl restart php8.2-fpm
Debian 官方仓库版本较旧,建议使用 Ondřej Sury 仓库:
sudo apt update
sudo apt install -y lsb-release ca-certificates curl
curl -sSLo /tmp/debsuryorg-archive-keyring.deb https://packages.sury.org/debsuryorg-archive-keyring.deb
sudo dpkg -i /tmp/debsuryorg-archive-keyring.deb
echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" \
| sudo tee /etc/apt/sources.list.d/sury-php.list
sudo apt update
然后安装你需要的版本:
sudo apt install php8.2 php8.2-fpm php8.2-cli
php -v 没变?update-alternativeswhich php✅ 安全,Debian 支持多版本共存,只需注意 Web 和 CLI 的实际使用版本。
| 场景 | 方法 |
|---|---|
| CLI | update-alternatives --config php |
| Apache | a2dismod / a2enmod + restart |
| Nginx | 修改 fastcgi_pass |
| 缺版本 | 添加 Sury 源 |
如果你愿意,可以告诉我:
我可以给你精确到命令级别的方案。