Ubuntu 下选择 PHP 版本的可执行指南
一、决策要点
- 明确项目类型与兼容性:新项目优先选择最新稳定版(性能、特性、安全更好);老项目以现有依赖为准,先评估升级成本与风险。
- 对齐框架与 CMS 要求:核对 Laravel、Symfony、WordPress 等官方兼容矩阵,避免踩坑。
- 关注生命周期与支持周期:优先选择仍在安全维护的版本,避免 EOL 版本带来的安全与合规风险。
- 统一团队与运维:尽量在团队与 CI/CD 中统一 PHP 版本,减少“本机能跑、线上报错”的差异。
- 规划升级路径:采用“评估—测试—灰度—上线”的节奏,逐步升级而非一次性跨越多个大版本。
二、版本选择建议表(2025 年)
| 场景 |
推荐版本 |
主要理由 |
| 新项目 |
PHP 8.3 / 8.4 |
性能与特性更优,生态跟进快;8.3 处于稳定维护期,8.4 为最新稳定版,适合长期迭代 |
| 稳定生产环境 |
PHP 8.3 |
稳定、变更相对可控,适合大多数业务 |
| 老项目短期过渡 |
PHP 8.1 / 8.2 |
兼容性与改动成本更可控,便于逐步升级 |
| 遗留系统维护 |
PHP 7.4(仅限短期) |
仅在确有依赖时考虑,尽快制定迁移计划(7.4 已 EOL) |
| 多项目同机共存 |
按项目分别配置 FPM 池 |
通过不同 socket/端口隔离,降低相互影响 |
说明:截至2025-12,PHP 主线已到8.4,8.3 仍在安全维护;若需长期稳定,优先 8.3,追求新特性可选 8.4;不建议在新项目中使用EOL版本(如 7.4)。
三、在 Ubuntu 上落地与切换版本
- 添加软件源并安装所需版本(以 8.2 为例):
sudo apt update && sudo apt install -y software-properties-common
sudo add-apt-repository -y ppa:ondrej/php
sudo apt update
sudo apt install -y php8.2 php8.2-fpm php8.2-cli php8.2-mysql php8.2-gd php8.2-mbstring php8.2-xml php8.2-zip php8.2-opcache
- CLI 切换默认版本:
sudo update-alternatives --set php /usr/bin/php8.2
- Apache 切换模块:
sudo a2dismod php7.4 && sudo a2enmod php8.2 && sudo systemctl restart apache2
- Nginx 指向对应 FPM(示例):
在 server 配置中确保 fastcgi_pass 指向正确套接字,例如:
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
然后 sudo systemctl restart nginx
- 验证:
php -v 与 php -m 查看版本与已启用扩展;Nginx/Apache 下可创建 info.php 验证解析是否正常。
四、多版本共存与兼容性测试
- 多版本共存:同一台机器可安装多个 PHP,分别启用不同 FPM 池(不同 socket/端口),按虚拟主机或目录分流。
- 按 Host 动态选择版本(Nginx 示例,使用 map):
http {
map $host $php_version {
default “8.2”;
legacy.example.com “7.4”;
}
server {
location ~ .php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php/php$php_version-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
}
- 本地与 CI 测试:使用 Docker 快速拉起多版本环境(如 7.4/8.2/8.3/8.4)做回归;在代码层面用 phpCompatibility 等工具做静态扫描,配合单元测试与灰度发布,降低升级风险。