在后台提交包含数百个选项的大型菜单列表、多语言翻译表或批量商品属性时,常出现“保存后部分表单字段离奇丢失”的现象。这通常是触发了 PHP 核心配置项 max_input_vars 的安全上限所致。
一、 核心根因:Hash 碰撞 DoS 防御机制
PHP 5.3.9 引入了 max_input_vars,默认限制单个 HTTP 请求($_GET, $_POST, $_COOKIE)中最多接收 1000 个表单变量,超出部分会被静默丢弃。
二、 调优与修改方法
编辑当前 PHP 的 php.ini 配置文件(如 /etc/php/8.3/fpm/php.ini):
; 将变量上限提升至 5000 或更大
max_input_vars = 5000保存后重启 PHP-FPM 服务:sudo systemctl restart php8.3-fpm 即可完美解决字段丢失问题。