CentOS 7.5 升级 PHP 至 8.3.36 完整实操记录

📌 背景说明

  • 原环境 :CentOS 7.5 + Nginx,原 PHP 8.3 通过 Remi 源安装,运行用户为 apache,监听 127.0.0.1:9000。

  • 痛点:Remi 源已停止为 CentOS 7 (EL7) 提供最新的 PHP 8.3.36 安全更新。

  • 最终方案 :下载 Plesk 官方仓库中为 CentOS 7 编译的 RPM 包,安装至独立目录 /opt/plesk/php/8.3/,并配置新端口 9001 与旧版本并存。修改 Nginx 指向新端口,实现无缝升级。


🚀 核心升级步骤

第一步:准备必要的扩展 RPM 包

由于 Plesk 将扩展拆分,需进入 ~/php836-upgrade 目录,下载 WordPress 必备的核心包与扩展包:

  • 核心基础 :plesk-php83 (核心), plesk-php83-cli (命令行), plesk-php83-fpm (进程管理器)

  • 数据库 :plesk-php83-mysql (包含 mysqli 和 pdo_mysql), plesk-php83-pdo

  • 常用扩展 :plesk-php83-gd, plesk-php83-mbstring, plesk-php83-xml, plesk-php83-opcache, plesk-php83-intl, plesk-php83-bcmath

  • 依赖扩展 :plesk-php83-sodium (PHP 8.3 核心强依赖的加密扩展)

(注:下载地址位于 https://ch.origin.autoinstall.plesk.com/pool/PHP_8.3.36_163/dist-rpm-CentOS-7-x86_64/packages/)

第二步:解决系统底层依赖

安装 plesk-php83-sodium 需要系统的 libsodium 库支持:

bash

复制

下载

复制代码
sudo yum install -y epel-release
sudo yum install -y libsodium libsodium-devel

第三步:本地安装所有 RPM 包

确保所有需要的 .rpm 文件都在当前目录,使用 yum localinstall 自动解决包依赖:

bash

复制

下载

复制代码
cd ~/php836-upgrade
sudo yum localinstall *.rpm -y

安装完成后,Plesk 的 PHP 会独立存放在 /opt/plesk/php/8.3/ 目录。

第四步:配置并启动 Plesk PHP-FPM

  1. 解决日志权限:让新服务能正常写入日志。

    bash

    复制

    下载

    复制代码
    chown -R apache:apache /var/log/plesk-php83-fpm
  2. 创建并配置进程池 :由于 Plesk 默认没有提供 www.conf,需手动创建:

    bash

    复制

    下载

    复制代码
    vi /opt/plesk/php/8.3/etc/php-fpm.d/www.conf

    填入以下内容(注意:使用 apache 用户,并监听 9001 端口避开冲突):

    ini

    复制

    下载

    复制代码
    [www]
    user = apache
    group = apache
    
    listen = 127.0.0.1:9001
    listen.allowed_clients = 127.0.0.1
    
    php_admin_value[error_log] = /var/log/plesk-php83-fpm/www-error.log
    php_admin_flag[log_errors] = on
    
    pm = dynamic
    pm.max_children = 50
    pm.start_servers = 5
    pm.min_spare_servers = 5
    pm.max_spare_servers = 35
  3. 启动新服务并设置开机自启:

    bash

    复制

    下载

    复制代码
    systemctl start plesk-php83-fpm
    systemctl enable plesk-php83-fpm
    
    # 验证 9001 端口是否成功监听
    netstat -tlnp | grep 9001

第五步:修改 Nginx 并切换流量

  1. 编辑 Nginx 配置文件:

    bash

    复制

    下载

    复制代码
    vi /etc/nginx/nginx.conf
  2. 修改 fastcgi_pass :将所有 WordPress 站点的 fastcgi_pass 127.0.0.1:9000; 修改为 9001。

  3. 测试并重载:

    bash

    复制

    下载

    复制代码
    nginx -t
    nginx -s reload

第六步:验证与收尾

  1. 验证版本 :在网站根目录创建 phpinfo.php(内容 <?php phpinfo(); ?>),浏览器访问确认:

    • PHP 版本为 8.3.36。

    • Loaded Configuration File 指向 /opt/plesk/php/8.3/etc/php.ini。

    • 确认 mysqli 等扩展已加载。测试完务必删除此文件。

  2. 验证功能:登录 WordPress 后台,测试发文、传图、插件更新等,确认权限正常。

  3. 防止源冲突:禁用 Remi 的 php83 源,防止未来意外升级冲突。

    bash

    复制

    下载

    复制代码
    sudo yum-config-manager --disable remi-php83

⚠️ 踩坑与避坑指南(重要记录)

  1. 找不到 mysqli 扩展 :Plesk 的仓库中没有名为 mysqli 的独立包,其功能包含在 plesk-php83-mysql 包中,必须下载该包。

  2. 不能以 root 运行 PHP-FPM :新版本启用了严格的安全模式,如果配置文件写 user = root 会报错 ERROR: [pool www] please specify user and group other than root。必须使用低权限用户(如原环境的 apache)。

  3. 配置文件路径差异 :Plesk 的配置文件在 /opt/plesk/php/8.3/etc/,且默认没有 www.conf,需要自己建。原有的 /etc/php.ini 修改(如上传限制、时区)不会自动同步,需单独在 /opt/plesk/php/8.3/etc/php.ini 中修改并重启服务。

  4. 回滚策略 :升级过程中绝对不要 立刻停止或卸载旧的 9000 端口 PHP-FPM。如果新版本出现任何异常,只需把 Nginx 配置里的 9001 改回 9000 并 reload,即可瞬间回退到旧环境,保证业务不断。


记录时间:2026-10-22

当前状态:新版本 8.3.36 已平稳运行,旧版 9000 端口暂时保留备用。

相关推荐
djjjx.1 小时前
Linux进程篇(七):环境变量的底层溯源、核心获取机制与安全应用
linux·运维·服务器
FriendshipT1 小时前
Vim 完整指南:从入门到高效编辑
linux·人工智能·编辑器·vim·1024程序员节
Zevalin爱灰灰1 小时前
Linux入门第一部分(Ubuntu入门篇) 第二章 浅尝Ubuntu(一)
linux·嵌入式·1024程序员节
wuminyu1 小时前
JVM规范学习总结-Java源码经过javac编译后产物
java·linux·c语言·jvm·c++
java_nnnn1 小时前
Linux 学习第二篇:从零认识 Linux 文件系统、目录结构与基本命令
linux·运维·学习·1024程序员节
.道阻且长.2 小时前
Linux 基本开发工具:编辑器vim,配置vim
linux·运维·服务器·职场和发展·编辑器·vim·1024程序员节
江屿风2 小时前
【Linux-System】【System V共享内存:从原理到实战的完整解析】流食般投喂
linux·运维·服务器·笔记·系统架构·1024程序员节
sbjdhjd3 小时前
从黑板事实到长链路剪枝:AI 渗透测试 Agent 的实验、失效与改造
人工智能·网络安全·数据挖掘·php·agent·剪枝·1024程序员节
昵称画10 小时前
交接班记录电子化:三班之间的信息不漏
开发语言·数据库·人工智能·低代码·php