POST请求的大小限制

3

我之前使用的是PHP版本5.3.5,想启用SOAP,于是通过webtatic仓库升级到了PHP版本5.3.13。现在一切都很正常!但是...

我使用Ajax POST了一个数组。客户端已经将完整的数组POST上来了,但服务器只收到了前1000个元素。

我查看了php.ini文件,但没有发现任何限制。

请提供建议。


1
很可能你在PHP中达到了限制,请参见https://dev59.com/Qmkw5IYBdhLWcg3wwNN5(如果是这样,在日志中应该有一个警告)。 - Stephan B
感觉有点傻。找不到错误日志。目前我还没有投入生产,只是将它们显示出来。 - user1032531
在使用Apache时,请检查主错误日志 - 在Linux上可能需要root访问权限。除此之外,尝试从链接的答案中增加配置设置。 - Stephan B
有点跑题,但是Apache只有在重启后才会写入新的日志。要查看文件末尾,请使用 tail /var/log/httpd/error.log ;) - Stephan B
谢谢!max_input_vars=4000 - user1032531
显示剩余3条评论
4个回答

4
我将此标记为PHP警告:未知:输入变量超过1000的重复内容,但那里的OP有不同的问题。因此,以下是评论中的解决方案:

当PHP 5.3.9+返回完全达到1000个变量和/或数组元素时,您会遇到安全限制,请参见php.ini:max-input-vars。 PHP版本在此之前可能会遇到由suhosin施加的类似限制引起的相同问题,请参见其配置

增加限制或更改数据传输方式。


谢谢。那个问题让我困惑了! - user1032531
今天我也遇到了这个问题,我不想增加max-input-vars的值。所以我用jquery来.serialize()表单,然后只发送一个带有这个大字符串的输入到php。之后我尝试使用json_decode/parse_str和其他JSON库,但都没有成功。接着,我尝试使用mb_parse_str(),它起作用了。原始表单有3960个标签数据输入(大多数是隐藏的)。 - StackUnder

1
在php.ini文件中,有以下的配置指令:
; Maximum size of POST data that PHP will accept.
; http://php.net/post-max-size
post_max_size = 8M

它已经设置为8M。仅出于好玩,将其更改为10M并重新启动Apache,但没有变化。 - user1032531

1
在 php.ini 文件中查找


post_max_size = 10M

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接