在 Ubuntu 系统上更新 PHP 其实有不少讲究。不同的使用场景和需求,对应的操作方法也各有不同。有的用户可能更倾向于使用系统自带的稳定版本,有的则希望第一时间体验最新特性,还有的因为项目特殊需要手动编译定制版本。下面将几种主流路线逐一详细讲解,帮助你在 Ubuntu 上顺利完成 PHP 版本升级。

一、准备工作:更新系统软件包列表
在开始更新 PHP 之前,有一个步骤必不可少:先刷新系统的软件包列表。这一步没做好,后续很可能遇到依赖冲突导致安装失败。执行下面两条命令即可:
sudo apt update# 更新软件包列表,同步最新索引sudo apt upgrade # 升级所有已安装软件包(可选,但强烈建议执行)
二、方法一:使用APT包管理器更新(适用于官方仓库版本)
如果你只需要 Ubuntu 官方仓库中的 PHP 版本——虽然不是最新,但胜在稳定性高——直接使用 APT 处理是最省心高效的做法。具体操作如下:
- 安装当前最新的可用 PHP 版本:
sudo apt install php# 默认安装系统仓库中的最新稳定版(例如Ubuntu 22.04仓库中的PHP 8.1) - 如果已安装旧版,只想升级 PHP 及其相关模块,加上
--only-upgrade参数:sudo apt --only-upgrade install php php-cli php-fpm php-mysql php-gd php-mbstring - 检查是否更新成功:
php -v# 查看当前PHP版本信息
三、方法二:通过PPA添加官方源更新(推荐,获取最新稳定版)
Ubuntu 官方仓库中的 PHP 版本更新往往滞后。如果你想用上 PHP 8.2 甚至更高版本,Ondřej Surý 提供的 PPA 可以说是社区中的“标配”方案。操作流程简洁明了:
- 先添加 PPA 源:
sudo add-apt-repository ppa:ondrej/php# 添加PPA源sudo apt update# 更新软件包列表(需重新拉取PPA中的包信息) - 然后直接安装你期望的版本,例如 PHP 8.2:
sudo apt install php8.2# 安装PHP核心sudo apt install php8.2-cli php8.2-fpm php8.2-mysql php8.2-gd php8.2-mbstring# 安装常用扩展 - 如果系统中存在多个 PHP 版本,需要设置默认版本:
sudo update-alternatives --set php /usr/bin/php8.2# 设置CLI默认版本sudo update-alternatives --set php-fpm /usr/sbin/php8.2-fpm# 设置PHP-FPM默认版本(适用于Nginx用户) - 验证安装结果:
php -v# 应显示你所安装的最新版本
四、方法三:手动编译安装(高级用户,灵活自定义配置)
在某些特殊场景下——例如需要某个旧版本的修复补丁,或者想启用一些特定的编译选项——APT 和 PPA 都无法满足需求。此时就需要手动编译源码进行安装。
- 首先安装编译工具链和必要依赖:
sudo apt install build-essential libxml2-dev libssl-dev libcurl4-openssl-dev libjpeg-dev libpng-dev libfreetype6-dev libonig-dev libzip-dev - 从 PHP 官方网站下载所需的版本,解压并进入目录:
wget https://www.php.net/distributions/php-8.1.22.tar.gztar -xzvf php-8.1.22.tar.gzcd php-8.1.22 - 根据自身需求配置编译参数,例如启用 mbstring、curl 等常用扩展:
./configure --prefix=/usr/local/php8.1 --with-config-file-path=/etc/php/8.1/cli --enable-mbstring --with-curl --with-openssl --with-mysqli --with-pdo-mysql - 开始编译并安装:
make -j$(nproc)# 多线程编译,提升速度sudo make install# 安装到指定目录 - 配置环境:
- 复制配置文件:
sudo cp php.ini-production /etc/php/8.1/cli/php.ini# CLI配置sudo cp php-fpm.conf.default /etc/php/8.1/fpm/php-fpm.conf# FPM配置sudo cp /etc/php/8.1/fpm/php-fpm.conf /etc/php/8.1/fpm/php-fpm.conf# 确保FPM配置存在sudo cp /etc/php/8.1/fpm/pool.d/www.conf.default /etc/php/8.1/fpm/pool.d/www.conf# FPM进程池配置 - 启动 PHP-FPM(若配合 Nginx 使用):
sudo systemctl start php8.1-fpmsudo systemctl enable php8.1-fpm
- 复制配置文件:
- 最后确认版本:
/usr/local/php8.1/bin/php -v# 查看手动编译安装的PHP版本
五、更新后必要操作
- 务必重启 Web 服务器:
- Apache 用户:
sudo systemctl restart apache2 - Nginx + PHP-FPM 用户:
sudo systemctl restart nginxsudo systemctl restart php-fpm# 替换为实际版本号(例如php8.2-fpm)
- Apache 用户:
- 验证 Web 环境中的 PHP 版本——创建一个
info.php文件(例如放在/var/www/html/info.php),内容如下:
然后通过浏览器访问https://服务器IP/info.php,核对显示的 PHP 版本是否正确。
注意事项
- 备份始终是安全底线:更新前最好将网站文件(如
/var/www/html)和数据库全部备份,一旦出现问题可以快速回滚。 - 兼容性必须提前评估:并非所有老旧项目都能无缝升级到 PHP 8.0+,尤其是一些历史悠久的框架。强烈建议先在测试环境中进行全面测试。
- 依赖问题:若安装过程中遇到依赖错误,可尝试执行
sudo apt --fix-broken install,通常能解决大部分依赖冲突。 - PPA 的安全性:
ondrej/php虽被广泛使用,但它毕竟不是官方源。开发环境可放心使用,若在生产环境部署,建议先评估潜在风险。
