解决方案
1. 修改 max_input_vars
(关键参数)
PHP 默认限制 max_input_vars = 1000
,所以您只能接收 990 条左右(因为还有其他参数,如 chunkcount
、width
等占用变量数)。
修改方法:
方法 1:修改
php.ini
(推荐)max_input_vars = 2000 ; 调整为2000或更高
然后 重启 PHP 服务(Apache/Nginx/PHP-FPM)。
方法 2:
.htaccess
(适用于 Apache)php_value max_input_vars 2000
方法 3:
ini_set()
(不推荐,可能无效)ini_set('max_input_vars', '2000');
注意:
max_input_vars
不能在运行时修改,必须在php.ini
或.htaccess
中设置。
2. 检查 suhosin
扩展(如果有安装)
某些服务器安装了 Suhosin 扩展,它可能额外限制输入变量数量:
suhosin.post.max_vars = 1000 ; 默认可能较低
suhosin.request.max_vars = 1000
修改方式:
suhosin.post.max_vars = 2000
suhosin.request.max_vars = 2000
然后 重启 PHP。
3. Nginx 额外配置(如果使用 Nginx)
如果使用 Nginx,确保 client_max_body_size
足够大:
http {
client_max_body_size 20M; # 调整 POST 数据大小限制
}
然后 重启 Nginx:
nginx -s reload
4. 测试是否生效
创建一个 PHP 文件 test.php
:
<?php
echo "max_input_vars: " . ini_get('max_input_vars') . "<br>";
echo "post_max_size: " . ini_get('post_max_size') . "<br>";
echo "suhosin.post.max_vars: " . (ini_get('suhosin.post.max_vars') ?: 'Not installed') . "<br>";
?>
访问该文件,检查 max_input_vars
是否已调整。
总结
问题 | 解决方案 |
---|---|
contexts[] 数组只能接收 990 条 | 修改 php.ini 或 .htaccess 中的 max_input_vars = 2000 |
修改后仍然无效 | 检查 suhosin 扩展限制,或 Nginx 的 client_max_body_size |
确保 PHP 配置生效 | 重启 PHP 服务(Apache/Nginx/PHP-FPM) |
调整后,您的 PHP 应该能接收 1391 条 contexts[]
数据。如果仍然有问题,请检查 服务器日志(如 error_log
) 是否有相关错误。
发表评论 取消回复