php 8.1.21受“php2shell”高危漏洞影响,需立即关闭session.upload_progress.enabled并升级至修复版本;临时措施仅能缓解,升级补丁才是根本解决方案。

PHP 8.1.21本身**不包含已知的命令执行漏洞**,但当前(2026年10月)真正需要紧急防护的是 **PHP官方于10月21日发布的两枚高危漏洞(CVSS 9.2)**,统称“php2shell”,影响范围明确包括 PHP 8.1.x 全版本(含8.1.21),成因是 session 上传进度处理中的释放后重用(UAF),可导致远程代码执行。
关键防护动作:立即关闭 upload_progress 功能
这是目前最有效、最易实施的临时缓解措施,直接切断已验证的攻击路径:
- 编辑 PHP 配置文件(如 /etc/php.ini 或 /etc/php-fpm.d/www.conf),添加或修改这一行:
session.upload_progress.enabled = Off - 若使用 .user.ini(PHP-FPM 模式下支持),可在网站根目录放置该文件,内容仅一行:
session.upload_progress.enabled=Off - 修改后必须重启服务:
sudo systemctl reload php-fpm(推荐)或 sudo systemctl restart php-fpm
Nginx 层配合加固:拦截可疑 multipart 请求
在 Web 服务器入口处增加一层过滤,作为纵深防御补充:
- 编辑 Nginx 虚拟主机配置(如 /etc/nginx/conf.d/default.conf),在 server 块内加入:
if ($request_body ~ "PHP_SESSION_UPLOAD_PROGRESS") { return 403; } - 注意:该规则仅适用于未启用 request body 缓存的场景;若已配置 client_body_buffer_size 或使用代理缓存,需改用 WAF 或 ModSecurity 规则。
- 生效前务必测试:
sudo nginx -t && sudo systemctl reload nginx
根本解决:升级到官方修复版本
临时措施不能替代补丁。根据 PHP 官方通告,修复版本已于 10 月 21 日发布:
- 确认你当前使用的 PHP 版本是否在受影响列表中:
PHP 8.1.x(全部)、8.2.x - Red Hat 8 用户请执行:
sudo dnf update php\* --enablerepo=remi-8.1(确保 remi-8.1 模块已启用)
然后检查版本:php --version,应显示 ≥ 8.1.30(以实际修复版为准) - 升级后仍需验证配置是否生效:
创建一个 info.php 文件,访问并搜索 upload_progress.enabled,确认值为 Off,且 PHP 版本号已更新
额外建议:禁用危险函数与最小权限运行
即使漏洞修复,也应保持生产环境最小权限原则:
- 在 php.ini 中设置:
disable_functions = exec,passthru,shell_exec,system,proc_open,popen,pcntl_exec - 确保 PHP-FPM 进程以非 root 用户运行(如 nginx 或专用 www-data 用户),且上传目录(如 /var/www/html/uploads)无执行权限:
sudo chmod 755 /var/www/html/uploads && sudo chown nginx:nginx /var/www/html/uploads - 检查 Nginx 配置中是否对上传目录做了脚本禁止执行限制,例如:
location ^~ /uploads/ { deny all; }
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











