PHP:$_POST全局变量的总长度是多少?

25

我想知道有没有人知道一个帖子的总长度可以有多长,例如:

$_POST['formInput'] = "hello world, how long can I be?";

我正在创建一个网站,用户将在一个

1
可能是什么是POST请求的大小限制?的重复问题。这个问题比另一个问题早一个月,但我认为另一个问题更好地提出了问题。 - Ciro Santilli OurBigBook.com
该指令指定请求体中允许的字节数,范围从0(表示无限制)到2147483647(2GB)。http://httpd.apache.org/docs/2.0/mod/core.html#limitrequestbody - Anja Ishmukhametova
4个回答

29

请检查您的php.ini文件中的post_max_size设置。这通常默认为8MB,但如果您使用共享主机,它可能会有所不同。

; PHP将接受的POST数据的最大大小。
post_max_size = 8M

如果您希望向服务器发送大量数据,则必须使用$_POST。如需进一步了解,请查看文档中的POST方法上传


12
Apache也有LimitRequestBody和LimitRequestFieldSize指令,不总是安全地假设它只受PHP限制。 - tadamson

9

$_POST 是从 HTTP 请求的主体中填充的。由于 HTTP 请求的大小没有限制,因此在协议层面上也没有限制。但是 PHP 对读取的输入量有一些限制。您可以使用 ini 设置 post_max_size 来控制它。


4

另一个问题可能是php.ini中指令max_input_vars(默认1000)的默认限制,而不仅仅是post_max_size。如果您有一个非常大的表格,里面有成千上万个复选框,那么$_POST数组将只有1000个键。


1
这实际上解决了我的一个问题,它使请求远小于post_max_size,但是却达到了max_input_vars的限制。谢谢! - themarketka
1
哥们,你救了我的一天。我只上传了大约80kb的数据,但有超过1000个字段(大表单)。PHP端似乎缺少任意字段,直到我检查浏览器最初发布的内容与$_POST[]实际包含的内容之间的差异,并意识到“仅”解析了1000个字段。 - flu

1

如果你想从浏览器向服务器发送大量数据,你需要使用 HTTP POST 方法——这意味着在 PHP 端接收到的数据将出现在 $_POST 超全局数组中;对此你无能为力。

配置指令 post_max_size 定义了可以使用 POST 方法接收的最大数据量——根据你的需求,你可能需要将其设置为高于默认值的值。

正如 post_max_size 的文档所述,memory_limit 设置的值也可能很重要。


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