可以的,Debian 完全可以同时运行多个 PHP 版本,而且这是非常常见的做法,尤其是在维护老项目或做兼容性测试时。
下面给你几种主流、可行的方案,从简单到专业。
ondrej/php PPA(最推荐 ✅)这是 Debian / Ubuntu 下最成熟、最常用 的方式。
sudo apt update
sudo apt install -y curl wget gnupg2 ca-certificates lsb-release apt-transport-https
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
例如同时安装 PHP 7.4 和 PHP 8.2:
sudo apt install php7.4 php7.4-fpm
sudo apt install php8.2 php8.2-fpm
✅ 可以同时存在
✅ 不会冲突
update-alternatives --list php
sudo update-alternatives --config php
⚠️ 注意:
php-fpm socketfastcgi_pass 指定 PHP 版本# PHP 7.4
location ~ \.php$ {
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
}
# PHP 8.2
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
}
✅ 一台服务器
✅ 多个网站
✅ 不同 PHP 版本
sudo apt install php7.4-fpm libapache2-mod-fcgid
sudo a2enmod proxy_fcgi
不同虚拟主机指定不同 PHP:
<FilesMatch \.php$>
SetHandler "proxy:unix:/run/php/php7.4-fpm.sock|fcgi://localhost"
</FilesMatch>
如果你不想污染系统环境:
docker run -d php:7.4-fpm
docker run -d php:8.2-fpm
✅ 无版本冲突
✅ 非常适合开发 / CI
| 方式 | 原因 |
|---|---|
| 手动编译 PHP | 维护成本高 |
只靠 update-alternatives |
无法真正多版本并行 |
| 一个 Apache 同时 mod_php 多版本 | 不支持 |
Debian 完全支持同时运行多个 PHP 版本,推荐使用
ondrej/php+ PHP-FPM。
如果你愿意,我可以:
你现在用的是 Debian 几?Nginx 还是 Apache?