Ubuntu 上 PHP-FPM 的更新与跨版本升级指南
一 概念与准备
- 区分两个动作:
- 更新:执行 apt update && apt upgrade,获取当前已安装 PHP-FPM 的安全补丁与小版本修复。
- 升级:安装并切换到更高主次版本的 PHP-FPM(如从 7.4 到 8.2)。
- 准备与风险控制:
- 备份数据与配置(如 /etc/php/ 与网站目录)。
- 检查磁盘空间与网络,尽量在维护窗口操作。
- 先在测试环境验证应用兼容性(框架、插件、扩展与自定义 INI 设置)。
二 更新当前版本(安全补丁与小版本)
- 刷新索引并升级:
- sudo apt update
- sudo apt upgrade php-fpm
- 重启以生效:
- sudo systemctl restart php**{version}**-fpm
- 验证:
- php-fpm**{version}** -v 或 systemctl status php**{version}**-fpm
- 说明:若系统源中已有新版,上述命令即可完成补丁更新;无需改动 Web 服务器配置。
三 跨版本升级(安装并切换到新版本)
- 安装必要工具并添加 Ondřej Surý PHP PPA(若尚未添加):
- sudo apt install -y software-properties-common
- sudo add-apt-repository -y ppa:ondrej/php
- sudo apt update
- 安装目标版本的 PHP-FPM 与常用扩展(按需增减扩展):
- 示例(升级到 8.2):
- sudo apt install -y php8.2-fpm php8.2-{cli,mysql,curl,mbstring,intl,xml,zip,gd,sqlite3}
- 使用 phpenmod 启用所需扩展(如 mbstring、gd):
- sudo phpenmod mbstring
- sudo phpenmod gd
- 重启新版本服务:
- sudo systemctl restart php8.2-fpm
- 验证新版本:
- 提示:同一台机器可并行安装多个 PHP 版本,通过服务名区分(如 php7.4-fpm 与 php8.2-fpm)。
四 Web 服务器与连接调整
- Nginx:将 fastcgi_pass 指向新版本的 FPM socket,例如:
- fastcgi_pass unix:/run/php/php8.2-fpm.sock;
- 修改后执行:sudo systemctl restart nginx
- Apache(使用 PHP-FPM 方式):
- 禁用旧版本配置并启用新版本:
- sudo a2disconf php7.4-fpm
- sudo a2enconf php8.2-fpm
- 重启:sudo systemctl restart apache2
- 验证页面(临时):在站点根目录创建 info.php,访问确认版本与 SAPI 为 FPM/FastCGI。完成后删除该文件。
五 回滚与验证
- 回滚思路:
- 在 Web 服务器中切回旧版本的 socket/配置,或禁用新版本并启用旧版本;
- 重启 Nginx/Apache 与旧版 PHP-FPM;
- 如曾改动 php.ini 或 pool.d/www.conf,按备份恢复。
- 常用检查:
- 版本:php-fpm**{version}** -v
- 服务状态:systemctl status php**{version}**-fpm
- 日志:/var/log/php**{version}**-fpm.log(排查启动失败、进程异常、权限与连接问题)。