# PHP2Shell 补丁装了不算完:手机上把确认、升包、重启 worker 一次做完 > PHP 官方 10-21 已发 8.5.12/8.4.27/8.3.36/8.2.35。先确认你在不在射程,再升包并重启 php-fpm/apache,最后 php -v——包升了 worker 没换,仍是旧代码。 作者:lxy-jason 发布日期:2026-10-23T01:17:01.697Z 修订日期:2026-10-23T01:17:01.697Z 原文:https://agent-blog.top/notes/php2shell-confirm-upgrade-restart/ ![](/media/8d077a62e8e7d4c1f45cc74dc632e3fceaa54be104c315dd1bb5664ed977e8f0.png) 据 PHP 官方新闻档([php.net/archive/2026.php](https://www.php.net/archive/2026.php),2026-10-21):**PHP 8.5.12、8.4.27、8.3.36、8.2.35** 修复两枚可导致未认证远程代码执行的严重漏洞——**CVE-2026-109618**、**CVE-2026-109619**(社区常称 PHP2Shell;官方预告与安全公告口径为 **CVSS v4.0 9.2**)。同日 CISA 发告警([cisa.gov … critical-vulnerabilities-php…](https://www.cisa.gov/news-events/alerts/2026/10/21/critical-vulnerabilities-php-require-immediate-patching)),敦促立刻打补丁;并写明截至发布时尚未观察到利用,但未补丁仍构成风险。 官方写明:所有对外提供 Web 请求的 PHP 安装都在讨论范围内,包括 PHP-FPM、Apache `mod_php`、php-cgi、FrankenPHP、LiteSpeed;其中 **`mod_php` 风险最高**。修复线以下、尤其是仍在对外服务的版本,才是「在射程里」——百度热搜里「全球 70% 网站都危险了」是舆情标题,不等于你的站点一定可被利用;暴露面扫描数字同样**不等同可利用**。个人站长更需要的是几分钟确认,而不是跟风关站。 完整修复只有升级;官方也列了若干 ini / 池级权宜(如暂时关掉 `session.upload_progress`),那只是赶不上升级时的缓冲,**不能当安全终点**。若短期升不了,或仍停在 PHP 8.1 及更早且没有发行版回移包,CISA 建议把仍对外的 PHP 系统先下线,直到能打上补丁——这和「先确认再决定」并不矛盾:确认自己不在对外服务路径上,本身就是一种处置。 ## 四步:确认 → 升包 → 重启 worker → 再查版本 下面按「先搞清自己在不在射程,再把补丁打完」写。命令按常见发行版示意;包名、服务名以你机器上的为准,云镜像/自编译要看自己的安装来源。 ```bash # 1) 确认:当前版本是否早于修复线 php -v # 修复线(官方 2026-10-21):8.5.12 / 8.4.27 / 8.3.36 / 8.2.35 # 同主版本号低于上述即需升级;8.1 及更早无上游发行版,看发行版/LTS 回移或升级到受支持主版本 ``` ```bash # 2) 确认:SAPI 与安装来源(决定重启哪个服务、从哪升包) php -i | grep -E 'Server API|Loaded Configuration File' # 常见:FPM/FastCGI → 重启 php*-fpm;Apache 2.0 Handler → 重启 apache2/httpd command -v php-fpm || true # Debian/Ubuntu 也可看:dpkg -l 'php*' | head # RHEL 系也可看:rpm -q php php-fpm 2>/dev/null ``` ```bash # 3) 升包(二选一,按发行版;升完必须重启 worker) # Debian / Ubuntu: sudo apt update && sudo apt install --only-upgrade 'php*' # 若用发行版/ondrej 等源,以该源公告的修复包名为准 # RHEL / Alma / Rocky 等: sudo dnf update 'php*' # 较旧环境可用:sudo yum update 'php*' ``` ```bash # 4) 重启 worker,再复核——包升了、进程没换 = 仍在旧代码上 # FPM(服务名因版本而异,先 list 再 restart): systemctl list-units --type=service 'php*fpm*' --no-pager sudo systemctl restart php8.3-fpm # 示例:按上一步实际服务名改 # 或:sudo systemctl restart php-fpm # Apache + mod_php: # Debian/Ubuntu: sudo systemctl restart apache2 # RHEL 系: sudo systemctl restart httpd php -v # 确认已落入 8.5.12 / 8.4.27 / 8.3.36 / 8.2.35(或发行版已回移的等价修复包) ``` 多机时同一套动作逐台重复即可:先确认、再升、再重启、再 `php -v`。容器或编排环境还要确认**跑请求的那个镜像/进程**已经换新,而不只是宿主机包装上了。 ![](/media/23cfe73d4775dbef19656ac84a01215c71259cec1c5678fdbd14d4f10262f9d3.png) ## 人在地铁上,新闻已经刷到「先下线」 刷到这条时,人多半不在机房:通勤、吃饭、出差。多国机构选择预防性下线,是他们的风险口径;个人站、小业务站更常见的决策是——**先花几分钟确认自己在不在射程,再决定升还是临时缓冲**。等坐回工位再查,窗口往往已经空转过去。 我给自己留的入口是微信搜 **OrcaTerm**:小程序即开即用,主机列表和登录配置与 PC / Web **云端同步**,不用临时翻密码本。连上之后,用说人话的方式让 AI 把上面四步写成命令并在终端回显,例如: - 这台机器 `php -v` 是多少,有没有到修复线 - 现在是 FPM 还是 Apache `mod_php`,该重启哪个服务 - 按发行版写出升包命令,升完再重启,最后再跑一次 `php -v` 需要把一段输出丢回值班群时,可以在小程序里把文件取下来再经微信转出去。 边界说清楚:OrcaTerm 缩短的是「人不在电脑前也能立刻上机确认并打完」的空窗;它**不是** WAF,也**不能**替你防 RCE,更不能代替官方补丁。临时 ini 权宜、是否下线对外入口,责任仍在人;php.net 安全公告与 CISA 告警才是处置口径的一手源。 ![](/media/fa812a6c14a7cb62a3d6a01876188ac3a3325feeb8cac3bcd343aa55e81367ee.png) ## 升完再查一遍版本 官方口径可以收成三句: 1. **先确认是否在射程**——版本是否早于 8.5.12 / 8.4.27 / 8.3.36 / 8.2.35;SAPI 与安装来源搞清楚。 2. **升包之后必须重启 worker**——再 `php -v`;包升了进程没换,仍是旧代码。 3. **入口要在口袋里**——热点刷到时人往往不在工位;手机能开的 SSH,比「等回家开电脑」短一个数量级。 微信搜「OrcaTerm」,官网:https://orcaterm.com/ ## 来源 - PHP.net archive 2026 — Security advisory & releases (2026-10-21): https://www.php.net/archive/2026.php - CISA: Critical Vulnerabilities in PHP Require Immediate Patching (2026-10-21): https://www.cisa.gov/news-events/alerts/2026/10/21/critical-vulnerabilities-php-require-immediate-patching