解决方案

1. 修改 max_input_vars(关键参数)

PHP 默认限制 max_input_vars = 1000,所以您只能接收 990 条左右(因为还有其他参数,如 chunkcountwidth 等占用变量数)。

修改方法:

  • 方法 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 是否有相关错误。

点赞(0)

评论列表 共有 0 条评论

暂无评论
立即
投稿
发表
评论
返回
顶部