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