> ## Documentation Index
> Fetch the complete documentation index at: https://doc.lwops.cn/llms.txt
> Use this file to discover all available pages before exploring further.

# PHP-7.4 安全升级实施方案

基于官方安全补丁 [PHP-7.4-CVE-2026-109618-109619](https://github.com/php/php-src/tree/PHP-7.4-CVE-2026-109618-109619) 修复漏洞。

| 文档版本 | 发布日期 | 关联漏洞 |
| :- | :- | :- |
| V1.1 | 2026-10-22 | CVE-2026-109619（跨请求状态残留 UAF）、CVE-2026-109618（OOM longjmp） |

## 方案总览

| 方案 | 内容 | 说明 |
| :- | :- | :- |
| 方案一 | 二进制包直接替换 | 针对标准环境，可使用已编译好的二进制更新包直接替换。 |
| 方案二 | 手工编译升级 | 针对各种特殊 XC 环境，或需要由现场自行构建的版本。 |

## 方案一：二进制包直接替换

### 方案说明

* 使用已编译好的二进制更新包，直接替换 `/itops/php` 下的 `bin/`、`include/`、`lib/`、`sbin/` 目录，修复 CVE-2026-109619 与 CVE-2026-109618 两个漏洞。
* 无需编译环境和编译过程，操作简单、耗时短，适合标准环境的批量升级。
* 二进制包与操作系统强相关，必须选用与现场系统对应的更新包（见「更新包说明」），不可混用。
* 更新前旧版本目录整体备份（tar 包 + 目录移动双备份），出问题可快速回滚（见「回滚」）。

### 更新包说明（持续更新）

<table>
  <colgroup>
    <col width="226" />

    <col width="458" />
  </colgroup>

  <thead>
    <tr>
      <th>适用系统</th>
      <th>更新包名</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>Rocky Linux 8（X86\_64）</td>
      <td>[Rocky8-x86\_64\_PHP-7.4.34-dev.tar.gz](https://forum.lwops.cn/release/download/p/UZwPWwepN8jEbKjb)</td>
    </tr>

    <tr>
      <td>CentOS 7（X86\_64）</td>
      <td>[CentOS7-x86\_64\_PHP-7.4.34-dev.tar.gz](https://forum.lwops.cn/release/download/p/cuhtP5lVEhoI93ED)</td>
    </tr>

    <tr>
      <td>Anolis OS 7（X86\_64）</td>
      <td>[CentOS7-x86\_64\_PHP-7.4.34-dev.tar.gz](https://forum.lwops.cn/release/download/p/cuhtP5lVEhoI93ED)</td>
    </tr>

    <tr>
      <td>麒麟 V10（X86\_64）</td>
      <td>[Kylin-v10-x86\_64\_PHP-7.4.34-dev.tar.gz](https://forum.lwops.cn/release/download/p/Qnjb9Zy2PXqOddC3)</td>
    </tr>

    <tr>
      <td>麒麟 V10（AARCH64）</td>
      <td>[Kylin-v10-aarch64\_PHP-7.4.34-dev.tar.gz](https://forum.lwops.cn/release/download/p/VGtlqf5RTwp7YMW9)</td>
    </tr>

    <tr>
      <td>OpenEuler-22.03（X86\_64)</td>
      <td>[OpenEuler-22.03-x86\_64\_PHP-7.4.34-dev.tar.gz](https://forum.lwops.cn/release/download/p/0tYoGdoAjWKPLexs)</td>
    </tr>

    <tr>
      <td>UOS-Server（X86\_64）</td>
      <td>[UOS-Server-20-kongzi-x86\_64\_PHP-7.4.34-dev.tar.gz](https://forum.lwops.cn/release/download/p/aQxzv1Mh3kvnzrQc)</td>
    </tr>
  </tbody>
</table>

> [!TIP]
>
> 对应操作系统的更新包将会持续更新，请关注《乐维文档 PHP 安全升级方案》。

### 升级步骤

```bash theme={null}
# 1. 上传更新包到 /itops/php（注意使用对应系统的更新包，地址见「更新包说明」）

# 2. 停止 php
systemctl stop php-fpm

# 3. 切换到 itops 用户并备份
su - itops
cd /itops/php

# 更新前双备份：tar 包 + 目录移动
tar -czvf php-7.4-backup.tar.gz bin/ include/ lib/ sbin/
mkdir php-7.4-backup
mv bin/ include/ lib/ sbin/ php-7.4-backup/

# 4. 解压更新包（注意使用对应系统的包名）
tar -xf Kylin-v10-x86_64_PHP-7.4.34-dev.tar.gz

# 5. 切回 root 用户，启动 php
exit
systemctl start php-fpm

# 6. 检查 php 是否正常运行
systemctl status php-fpm

# 7. 确认版本（应显示 PHP 7.4.34-dev）
/itops/php/bin/php -v
```

### 回滚

```bash theme={null}
# 验证不通过时执行
systemctl stop php-fpm

# 切换到 itops 用户
su - itops
cd /itops/php

# 移除新版文件（保留现场供排查）
NEW=php-7.4.34-failed_$(date +%Y%m%d)
mkdir $NEW
mv bin/ include/ lib/ sbin/ $NEW/

# 恢复升级步骤中移出的旧版本目录
mv php-7.4-backup/bin php-7.4-backup/include php-7.4-backup/lib php-7.4-backup/sbin .
rmdir php-7.4-backup

# 切回 root 并启动
exit
systemctl start php-fpm

# 确认回到旧版本
/itops/php/bin/php -v
```

## 方案二：手工编译升级

### 方案说明

* 使用部署包 [php-7.4.34-dev.zip](https://forum.lwops.cn/release/download/p/J0oi0LbriPUKjaBQ) 在目标主机上手工编译，安装至独立前缀 `/itops/php`，替换现有 PHP 运行环境，修复 CVE-2026-109619 与 CVE-2026-109618 两个漏洞。
* 部署包为 PHP 源码包，解压后根目录为 `php-7.4.34-dev/`，其下为标准 PHP 源码结构（含 `configure` 脚本）。
* 编译参数沿用现网配置（见「编译与安装」），确保扩展能力与依赖（PostgreSQL、net-snmp 均为本机自备路径）不变。
* 旧 PHP 版本目录整体备份后再安装新版本，若有问题方便回滚。

### 升级前准备

备份现有 PHP 目录：

```bash theme={null}
cd /itops
cp -r php php-7.4-old
```

安装编译依赖：该方案仅针对之前使用编译安装的项目，因此默认依赖已安装过。

### 停止服务

```bash theme={null}
# 停止现有 PHP-FPM（服务名按现场实际调整）
systemctl stop php-fpm || pkill -QUIT php-fpm
```

### 编译与安装

> [!WARNING]
>
> 以下参数为产品包默认编译参数，需按现场实际情况调整，例如现场额外增加过其他参数的情况。

```bash theme={null}
# 1) 解压
unzip -q php-7.4.34-dev.zip
cd php-7.4.34-dev

# 2) configure
./configure --prefix=/itops/php \
--with-pgsql=/itops/postgresql \
--with-pdo-pgsql=/itops/postgresql \
--with-mysqli \
--enable-bcmath \
--enable-calendar \
--enable-dom \
--enable-exif \
--enable-fileinfo \
--enable-filter \
--enable-fpm \
--enable-ftp \
--enable-gd \
--enable-inline-optimization \
--enable-json \
--enable-mbstring \
--enable-opcache \
--enable-pcntl \
--enable-pdo \
--enable-session \
--enable-shmop \
--enable-simplexml \
--enable-soap \
--enable-sockets \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
--enable-xml \
--with-bz2 \
--with-cdb \
--with-config-file-path=/etc \
--with-curl \
--with-freetype \
--with-gmp \
--with-iconv \
--with-jpeg \
--with-ldap \
--with-ldap-sasl \
--with-mhash \
--with-openssl \
--with-pdo-mysql \
--with-pdo-sqlite \
--with-readline \
--with-snmp=/itops/net-snmp \
--with-sqlite3 \
--with-xmlrpc \
--with-xsl \
--with-zip \
--with-zlib \
--without-pear

# 3) 编译（并发度按 CPU 核数；全量扩展一般 10–40 分钟）
make -j$(nproc)

# 4) 安装到 /itops/php
make install

# 5) 确认版本（应显示 PHP 7.4.34-dev）
/itops/php/bin/php -v

# 6) 切换授权
chown -R itops: /itops/php

# 7) 启动 php-fpm
systemctl start php-fpm
```

### 回滚

```bash theme={null}
# 验证不通过时执行
systemctl stop php-fpm

# 保留现场供排查
mv /itops/php /itops/php_failed_$(date +%Y%m%d)

# 恢复备份目录
cd /itops && mv /itops/php-7.4-old /itops/php

systemctl start php-fpm

# 确认回到旧版本
/itops/php/bin/php -v
```

> [!NOTE]
>
> 回滚后可恢复临时缓解措施状态，见《PHP 漏洞临时缓解指南》。


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.