温馨提示×

Debian如何切换PHP版本

小樊
44
2026-07-17 09:53:06
栏目: 编程语言

在 Debian 系统中切换 PHP 版本,常见做法取决于你是**命令行(CLI)切换,还是Web 服务器(Apache / Nginx)**切换。下面按场景说明。


一、先确认已安装的 PHP 版本

dpkg -l | grep php

或:

ls /usr/bin/php*

二、命令行(CLI)下切换 PHP 版本

1️⃣ 使用 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

三、Apache 下切换 PHP 版本

1️⃣ 禁用旧 PHP 模块

sudo a2dismod php7.4

2️⃣ 启用新 PHP 模块

sudo a2enmod php8.2

3️⃣ 重启 Apache

sudo systemctl restart apache2

✅ 验证:

php -v

或在 phpinfo() 页面查看。


四、Nginx 下切换 PHP 版本

1️⃣ 确认 PHP-FPM 已安装

sudo systemctl status php8.2-fpm

如未安装:

sudo apt install php8.2-fpm

2️⃣ 修改 Nginx 配置

编辑站点配置(示例):

location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php8.2-fpm.sock;
}

3️⃣ 重启服务

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

五、如果 PHP 版本不全,先添加 Sury 源(常见)

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-alternatives
  • 检查 PATH:which php

❓ 多版本共存是否安全?

✅ 安全,Debian 支持多版本共存,只需注意 Web 和 CLI 的实际使用版本


七、快速总结

场景 方法
CLI update-alternatives --config php
Apache a2dismod / a2enmod + restart
Nginx 修改 fastcgi_pass
缺版本 添加 Sury 源

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

  • Debian 版本(如 11 / 12)
  • 使用 Apache 还是 Nginx
  • 当前 PHP 版本

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

0