📌 背景说明

  • 原环境: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 端口暂时保留备用。

Logo

宁波官方开源宣传和活动阵地,欢迎各位和我们共建开源生态体系!

更多推荐