PHP爆出14年最严重漏洞:一个匿名请求就能远程执行代码,你的服务器升级了吗?
先别慌,修复的第一步是确认你实际在跑哪个PHP
CLI看到的版本不算数,网站用的才算
php -v显示的是命令行版本,网站实际跑的是PHP-FPM或mod_php的版本,两者可能不一致。宝塔用户在“软件商店 → 已安装”里看PHP版本,同时到具体站点的设置里确认绑定的PHP分支。服务器上装了多个PHP分支的,每一个都要单独核对,只升级其中一个不会覆盖其他分支上运行的站点。如果你拿到的是源码站下载的整站包,部署时顺手确认一下环境里的PHP版本,比等出事再回头查要省事,彩虹源码网(www.yuanmaz.com)在多数搭建教程里也会把PHP版本要求写在前面。

对照这张表,确认你的版本在不在里面
官方修复版本是 PHP 8.5.12、8.4.27、8.3.36、8.2.35,低于这些版本的同分支都受影响。PHP 8.1及更早的版本官方不再发布常规更新,但安全团队提供了源码级回移补丁,Linux发行版和面板厂商也做了适配包。受影响的不只是PHP本身:WordPress、Drupal、Joomla、Laravel等跑在PHP上的CMS和框架,只要底层PHP没打补丁,应用代码再干净也仍然暴露。
能升级就升级,这是唯一彻底的修复
宝塔用户:软件商店直接更新,不需要先升级面板
宝塔已经同步了官方修复版本,Linux和Windows面板的PHP 8.2–8.5都可以通过软件商店直接更新。操作路径是:进入“软件商店 → 已安装”,点右上角更新软件列表,找到网站实际使用的PHP分支,点更新,装完后确认PHP服务已经重启,没有自动重启的手动重启一次,让所有worker进程加载新版本。宝塔还为PHP 7.4、8.0、8.1打包了Linux修复版(7.4.34、8.0.31、8.1.35),旧分支的站点不用先迁到8.2才能打补丁。

非面板环境:按发行版或源码编译走
用apt、yum等包管理器的,先更新软件源,再升级PHP相关包,升级后重启PHP-FPM或Web服务器。源码编译的,下载对应分支的修复版本重新编译,或者应用官方提供的回移补丁。只升级命令行包不一定能覆盖独立部署的PHP-FPM服务或Apache模块,升级后要确认实际处理Web请求的进程已经是修复后的版本。
升级后走一遍核心功能,别只看版本号
页面访问、登录、文件上传、数据库连接,这几项至少过一遍。版本号对了但扩展不兼容、配置被覆盖的情况并不少见,尤其是从旧分支跨版本升级的服务器。
如果今晚升不了,先做这几项临时缓解
先明确一件事:临时缓解不是修复
PHP官方和各家安全公告的表述是一致的:升级是唯一彻底的修复,以下措施只能降低部分攻击路径的风险,不能把“没打补丁”变成“安全” 。它们适用于补丁还在排队、业务不能立刻停机的窗口期。
第一步,关掉session上传进度
在php.ini或FPM pool配置中设置:
session.upload_progress.enabled = 0修改后必须重启PHP-FPM或Apache,通过ini_set()或.user.ini在请求运行时改是无效的,必须在请求解析之前生效。这一项针对的是CVE-2026-109619的一条已验证触发路径,能砍掉一部分利用链,但不覆盖所有全局状态残留场景。
第二步,针对OOM路径调整内存配置
在FPM pool或Apache配置中用php_admin_value设置:
php_admin_value memory_limit = -1同时把post_max_size压到业务实际需要的最小值,不需要上传的设置8M,需要上传的32M左右,并保持upload_max_filesize低于post_max_size。不要用RLIMIT_AS或RLIMIT_DATA来替代,这两个限制可能在漏洞触发路径上制造内存分配失败,反而帮了攻击者。
第三步:WAF和前端请求限制作为补充
Cloudflare的免费和付费WAF用户在10月21日就已经默认获得了针对php2shell的拦截规则,不需要额外配置。宝塔的Nginx防火墙9.9.0及以上版本也加入了对应拦截。自建环境可以在Nginx或Apache层限制multipart请求的字段数、分段数和头部数量,但不要盲目封禁所有multipart请求,正常文件上传和表单提交也走这个编码类型。

升级完之后,顺手查两件事
看看日志里有没有异常子进程
php2shell利用成功后,PHP进程(www-data、apache、nginx)可能派生出sh、bash、curl、wget之类的子进程。用进程监控或auditd查一下有没有非预期的派生行为,Web日志里留意携带异常PHP_SESSION_UPLOAD_PROGRESS字段的POST请求。
把PHP版本纳入常规巡检
PHP 8.2的安全支持在2026年12月31日结束,即使这次打了补丁,之后也不会再有新的安全更新。服务器上跑着PHP站点的,把“当前PHP分支是否仍在支持周期内”当成一项固定检查项,比每次漏洞爆发再临时抱佛脚要省心。站内整理的源码包在部署时也尽量按教程里标注的PHP版本区间来选,老版本能跑不代表应该继续跑。
免责声明:本文由彩虹源码网(www.yuanmaz.com)整理发布,仅供PHP安全运维和技术学习参考。漏洞修复版本与临时缓解措施以PHP官方安全公告、宝塔面板官方文档及你所使用发行版/云厂商的说明为准。临时缓解措施不构成完整修复,生产环境变更前请在测试环境验证并做好备份与回滚预案。本文不构成对任何特定系统安全状态的保证。
觉得内容不错?我要





