教程
php2shell 一键修复:五大环境升级 PHP 安全版本命令行合集
先说结论
AI 操作示意图·以官网实际界面为准
不同环境,修复入口完全不同——apt/dnf 只更新发行版仓库里的 PHP,宝塔、aaPanel 这类面板自编译的 PHP 它管不到。先分清你的 PHP 是谁装的,再选下面的命令。
环境 A:Debian / Ubuntu(apt)
Debian 已发布安全通告 DSA-6574-1(Debian 13)与 DLA-4848-1(Debian 12),Ubuntu 走 Ubuntu 安全源。一键升级:
sudo apt update && sudo apt install --only-upgrade php* -y
升级后验证:php -v 必须显示修复版本号或更高;再 sudo systemctl restart php*-fpm 重启服务。
环境 B:RHEL / CentOS / AlmaLinux / Rocky(dnf/yum)
AlmaLinux 已于 10 月 21 日推送修复包,RHEL 8/9/10 于 10 月 23 日发布更新;使用 Remi 源的,PHP 8.3.36 等修复 RPM 已上 remi-modular 仓库(支持 EL8+ 与 Fedora)。升级:
sudo dnf -y update php* # RHEL9+/Fedora
sudo yum -y update php* # CentOS 7/8
若用 Remi 源装过 PHP,先 sudo dnf module reset php -y 再 sudo dnf -y update php*,按 Remi 仓库公告操作。
环境 C:宝塔 / aaPanel 等面板(重点)
面板自编译的 PHP 不走系统仓库——apt upgrade 不会更新它。正确路径是面板内升级:
- 登录面板,进入「软件商店 → PHP」,查看当前版本;
- 在站点列表逐个确认每个网站连接的 PHP 版本(只更新默认版本,仍连着旧 PHP-FPM 的站点照样中招);
- 面板内一键升级/切换版本到 8.2.35+ / 8.3.36+ / 8.4.27+ / 8.5.12;
- 升级后重启 PHP 服务,逐站验证。
环境 D:源码编译(自维护服务器)
PHP 8.1 及更早已官方 EOL,PHP 项目为 7.4/8.0/8.1 提供了最小源码 backport。自编译用户到 php.net 下载页取对应版本源码包,编译安装:
wget https://www.php.net/distributions/php-8.4.27.tar.gz
tar -xzf php-8.4.27.tar.gz && cd php-8.4.27
./configure --prefix=/usr/local/php84 --with-config-file-path=/usr/local/php84/etc [原编译参数]
make -j$(nproc) && sudo make install
编译前备份 php.ini 与 FPM 配置;用你原来的 configure 参数,别丢扩展。
环境 E:Windows / XAMPP
AI 操作示意图·以官网实际界面为准
到 php.net 下载页取 8.5.12 / 8.4.27 / 8.3.36 / 8.2.35 的 Windows 二进制(VC17 x64 等),停掉服务 → 备份原目录 → 解压覆盖 → 重启,php -v 验证。XAMPP 等集成环境在其控制面板里升级 PHP 模块。
一键修复脚本(自动检测环境)
以下脚本帮你自动完成"检测系统 → 备份提示 → 升级 → 验证",先看注释再运行:
#!/usr/bin/env bash
# php2shell 一键修复助手 —— 仅适用于发行版系统仓库安装的 PHP
# 面板环境(宝塔/aaPanel)请走面板升级,勿运行本脚本
set -euo pipefail
echo "[1/5] 检测当前 PHP 版本"
php -v | head -1 || echo "未找到 php 命令,请先确认 PHP 安装方式"
echo "[2/5] 检测操作系统"
. /etc/os-release
echo "OS: ${PRETTY_NAME:-$ID}"
echo "[3/5] 执行升级(发行版仓库)"
if command -v apt-get >/dev/null 2>&1; then
sudo apt-get update && sudo apt-get install --only-upgrade php* -y
elif command -v dnf >/dev/null 2>&1; then
sudo dnf -y update php*
elif command -v yum >/dev/null 2>&1; then
sudo yum -y update php*
else
echo "未识别到 apt/dnf/yum,请改用面板或源码方式升级"; exit 1
fi
echo "[4/5] 验证版本(需 ≥ 8.2.35 / 8.3.36 / 8.4.27 / 8.5.12)"
php -v | head -1
echo "[5/5] 重启 PHP 服务"
sudo systemctl restart $(systemctl list-units --type=service --all | grep -o 'php[0-9.]*-fpm' | sort -u | tr '\n' ' ') 2>/dev/null || true
echo "完成。请逐站验证业务页面。"
升级前的临时缓解速查

无法立即升级时,先按官方建议降低攻击面(不能替代升级):
php.ini:session.upload_progress.enabled = 0,重启所有 worker;PHP 8.5 再加fatal_error_backtraces = 0- FPM pool / Apache 配置:
php_admin_value[memory_limit] = -1(防应用覆盖) post_max_size:不需要上传设8M,需要上传设32M,且upload_max_filesize小于它
官方资料
资料核对日期:2026-10-25
- PHP 官网安全公告(漏洞与修复版本):https://www.php.net/
- Remi 仓库公告(8.2.35/8.3.36/8.4.27/8.5.12 RPM 可用):https://blog.remirepo.net/post/2026/10/22/PHP-version-8.2.35-8.3.36-8.4.27-8.5.12
- AlmaLinux 官方博客(php2shell 修复包已推送):https://almalinux.org/blog/2026-10-21-php2shell-cve-2026-109618-cve-2026-109619/
最近一周热门文章
按近 7 天访问热度排序,热度积累前优先展示新文章。
当前栏目最新文章
教程 · 继续阅读同栏目的新内容
一起交流
0 条留言LEAVE A NOTE
你的经验,也很重要。
无需注册或登录。请勿公开邮箱密码、证件、银行卡号或其他敏感信息。
















还没有留言,来分享你的想法吧。