您的位置 首页 php

PHP-浏览器通过POST最多可以传送多大的数据?

之前有碰到,部分浏览器有限制url的长度,也就是通过get传递的参数是有限制的。即使是使用POST传送参数,URL的长度也仍然受到这个限制,通常说的安全值是2K。

今天碰到一个情况是,在客户端通过JS传大量的数据给服务端,PHP收到的数据会丢失,在确认了数据丢失后,我在google搜索后确认:理论上,在使用POST传递数据时,无论HTTP协议,还是浏览器都没有限制传递数据的大小。

The body of a request (POST) is normally limited by the server on a
byte size basis in order to prevent a type of DoS attack (note that this
means character escaping can increase the byte size of the body). The
most common server setting is 10MB

那么PHP中哪些配置会影响到它可以接收的POST数据的大小呢?这才是我们要讨论的重点。确切的说,影响PHP接收POST数据大小的配置指令有下面三个,大部分人可能不太会注意到第三个指令。

memory_limit 256M

post_max_size 20M

max_input_vars 2500

memory_limit 限制了PHP可以使用的最大的内存。通常来说,这个值的设置可以大于等于post_max_size的值。实际上要远大于post_max_size的值。所以通常我们不太会考虑到它的影响,但是没考虑到不代表没影响。

post_max_size 指令限制允许post给PHP的数据的最大值。这个也会影响到文件的上传。它的值要大于等于upload_max_filesize的值。所以,memory_limit也会影响到文件上传。通常,memory_limit>=post_max_size>=upload_max_filesize。

max_input_vars 指令是PHP 5.4.16+版本引入的。限制PHP可以接收的变量的个数。 $_GET, $_POST , $_COOKIE这三个任何一个变量数量都不能超过max_input_vars限制数值。这个限制是分别限制。也就是说不管是这三个超级变量,各自的变量数量没超过限值就可以,不是说全部加一起。不过要注意的是,数组不是按一个变量算,而是按元素个数算。超过指定数量的数据将被截掉,而导致PHP收不到变量。

如果你碰到了这种情况,你可以修改这几个变量来调整你的PHP环境,至于如果修改PHP的配置则不在本文讨论范围。

文章来源:智云一二三科技

文章标题:PHP-浏览器通过POST最多可以传送多大的数据?

文章地址:https://www.zhihuclub.com/151118.shtml

关于作者: 智云科技

热门文章

网站地图