Ubuntu PHP版本如何更新
在Ubuntu服务器上更新PHP版本,需先更新系统并确认当前版本。推荐通过OndřejSurý的PPA仓库安装目标版本及扩展。随后根据Apache或Nginx配置启用新版本,并可通过update-alternatives实现多版本并存与切换。升级后务必验证版本,并提前规划回滚方案,建议在测试环境中充分验证兼容性。
在Ubuntu服务器上更新PHP版本,是很多开发者和运维人员都会遇到的操作。虽然听起来有点技术门槛,但只要步骤清晰,其实并不复杂。今天,我们就来梳理一套实用、可靠的升级流程,帮你安全平稳地完成版本过渡。

一、准备与版本确认
动手之前,做好准备工作能避免很多后续麻烦。第一步,当然是让系统软件源保持最新状态。
- 更新索引并升级现有软件包:
- sudo apt update
- sudo apt upgrade
- 安装添加仓库所需工具:
- sudo apt install software-properties-common
接下来,你需要明确两个关键信息:系统里现在有哪些PHP版本可用?以及当前正在运行的是哪个版本?
- 查看可用的PHP版本与模块:
- apt-cache search php | grep -E ‘php[0-9]+’
- 确认当前CLI版本:
- php -v
摸清家底,才能有的放矢。这些步骤能确保你后续的操作目标明确,不会装错版本或遗漏必要的扩展。
二、使用Ondřej Surý PPA安装或升级PHP(推荐)
对于大多数用户来说,通过Ondřej Surý维护的PPA仓库来安装PHP,是最省心、也最主流的方法。这个仓库更新及时,版本齐全,兼容性也经过广泛验证。
- 添加PPA仓库: 注意,你可以根据需要选择具体版本分支。例如,如果你只需要PHP 8.0,可以使用
ppa:ondrej/php8.0。通常,直接添加主仓库即可。- sudo add-apt-repository ppa:ondrej/php
- sudo apt update
- 安装目标版本: 这里以PHP 8.0为例,请将版本号替换成你的实际目标。
- sudo apt install php8.0
- 安装常用扩展: 光有核心还不够,根据你的项目需求(比如MySQL、GD图像处理、cURL等),安装对应的扩展模块。
- sudo apt install php8.0-cli php8.0-fpm php8.0-json php8.0-opcache php8.0-mysql php8.0-mbstring php8.0-xml php8.0-gd php8.0-curl
- 验证安装结果:
- php -v
这个方法适用于Ubuntu 18.04、20.04、22.04乃至最新的24.04等常见版本,是获取较新、稳定PHP版本的首选途径。
三、在Apache或Nginx中启用新版本
PHP装好了,但Web服务器还不知道该用哪个版本。接下来,就需要根据你用的是Apache还是Nginx,进行相应的配置。
Apache(模块方式)
- 启用新模块并禁用旧模块: 假设你要从PHP 7.4升级到8.0。
- sudo a2enmod php8.0
- sudo a2dismod php7.4(如果存在旧模块)
- 重启Apache服务:
- sudo systemctl restart apache2
Nginx(PHP-FPM方式)
Nginx本身不解析PHP,它通过FastCGI与PHP-FPM进程通信。所以,关键是指定正确的FPM套接字。
- 确认站点配置: 打开你的Nginx站点配置文件(通常在
/etc/nginx/sites-a vailable/),找到处理PHP的部分,确保fastcgi_pass指令指向新版本的FPM套接字。- fastcgi_pass unix:/run/php/php8.0-fpm.sock;
- 重启相关服务:
- sudo systemctl restart php8.0-fpm
- sudo systemctl restart nginx
这里有个细节需要注意:如果你使用Apache的模块方式,命令行(CLI)的PHP版本和Apache中运行的版本可能是独立的。而对于Nginx,则需要确保PHP-FPM服务运行的版本与Nginx配置中指定的版本完全一致。
四、多版本并存与切换
有时候,我们并不想“一刀切”地升级,而是希望让新旧版本共存,以便测试或运行不同的项目。Ubuntu的update-alternatives机制让这变得很容易。
- 同时安装多个版本: 例如,同时安装PHP 7.4和8.0。
- sudo apt install php7.4 php8.0
- 切换CLI默认版本: 将命令行默认的PHP切换到8.0。
- sudo update-alternatives --set php /usr/bin/php8.0
- 验证切换结果:
- php -v
需要提醒的是,这个切换只影响命令行环境。Web服务器实际使用的PHP版本,依然由Apache启用的模块或Nginx配置的FPM套接字决定,不会因为CLI切换而改变。
五、验证与回滚建议
升级完成,不代表万事大吉。最后一步的验证和回滚预案,是专业操作的体现。
验证
- CLI验证: 再次运行
php -v,确认版本号。 - Web验证: 在Web根目录(如
/var/www/html/)创建一个info.php文件,内容只有一行。然后通过浏览器访问这个文件,就能看到详细的PHP版本和已加载的扩展信息。切记,验证完成后务必删除此文件,以免暴露服务器敏感信息。
回滚
如果新版本出现问题,需要快速回退到旧版本,可以按以下步骤操作:
- 降级CLI版本:
- sudo update-alternatives --set php /usr/bin/php7.4
- Apache回滚:
- sudo a2dismod php8.0 && sudo a2enmod php7.4 && sudo systemctl restart apache2
- Nginx回滚: 将站点配置中的
fastcgi_pass改回旧版套接字(如php7.4-fpm.sock),然后重启服务。- sudo systemctl restart php7.4-fpm nginx
注意事项
说到底,升级操作有潜在风险。最稳妥的做法永远是:先备份数据和配置文件,然后在测试环境中完整走一遍流程。特别是当你的应用严重依赖某些特定PHP版本或扩展时,贸然升级可能会导致兼容性问题。建议采用逐步切换、充分回归测试的策略,确保万无一失。


































