PHP $_POST 限制

Posted

技术标签:

【中文标题】PHP $_POST 限制【英文标题】:PHP $_POST limit 【发布时间】:2013-10-07 03:35:42 【问题描述】:

我通过 jQuery $.post() 从 jscript 向 php 发送 JSON array。它是一个 3-4 位数字的表格,大小为 174 x 15(行 x 列)。检查 XHR 帖子时。我可以看到所有值,例如

pdata[0][]  dates
pdata[0][]  Fund B1
pdata[0][]  Fund B2
pdata[0][]  Fund B3
pdata[0][]  Fund B4
pdata[0][]  Fund B5
pdata[0][]  Fund B6
pdata[0][]  Fund B7
pdata[0][]  Fund B8
pdata[0][]  Fund B9
pdata[0][]  Fund B10
pdata[0][]  Fund B11
pdata[0][]  Fund b12
pdata[0][]  Fund B13
pdata[100][]    4/30/2005
pdata[100][]    -3.16%
pdata[100][]    -3.54%
pdata[100][]    -0.52%

请注意,第一个索引是按字母顺序排序的,而不是按数字排序的。然后我在 PHP 中将该数组处理为

$pdata  = $_POST['pdata']; 
print_r($pdata);

问题是大约一半的数据丢失了,$pdata 只有大约 72 个元素(数组)而不是 174 个。我以为它与 PHP post_max_size 相关,并将其增加到 30Mb,但它没有帮助。

还有什么可以截断数组?

谢谢。

【问题讨论】:

谢谢大家。将 max_input_vars 增加到 15000 可以解决问题。通过 POST 传递数千个变量是个好主意吗?在服务器上传递一个巨大的 JSON 字符串并在 PHP 中解码会更好吗? 【参考方案1】:

max_input_vars 是您要查找的指令。

默认为 1000,这与您的观察结果相匹配(“大约 72 个元素”=> 类似于 71x14 + 6)。

【讨论】:

【参考方案2】:

我遇到了同样的问题,为了解决这个问题,我将此行添加到我的 htaccess 文件中。

php_value max_input_vars 15000

您可以将 15000 值更改为适合您需要的任何值。

【讨论】:

【参考方案3】:

增加

suhosin.post.max_vars = 2048
suhosin.request.max_vars = 2048

在 php.ini 上并重启服务器

您也可以将其添加到您的 .htaccess 文件中(在这种情况下无需重新启动服务器) 但为此你必须 检查是

suhosin.perdir = "p"

在 php.ini 上设置

您可以使用检查 php.ini 配置默认变量

 phpinfo();

【讨论】:

【参考方案4】:

我建议你增加php.ini中的关注值

post_max_size = 200M
upload_max_filesize = 200M

您可以设置适合您需要的值。

注意:更改php.ini中的设置后需要重启服务器。

【讨论】:

以上是关于PHP $_POST 限制的主要内容,如果未能解决你的问题,请参考以下文章

https请求的post接口对数据的大小有限制吗

PHP警告POST内容长度超过限制

php修改上传文件大小限制

如何仅在 PHP 中限制某些特殊字符?

PHP/Apache/AJAX - POST 限制?

PHP 警告:POST 内容长度超出限制