is there any limit of POST arguments? I have situation where on dev server my form with over 520 args is posted and saved without problems, where on production env it saves only up to 499 args...
Any ideas?
By default, the maximum number of input variables allowed for PHP scripts is set to 1000. You can change this amount by setting the max_input_vars directive in a php. ini file. To verify the current value of the max_input_vars directive and other directives, you can use the phpinfo() function.
The default PHP values are 2 MB for upload_max_filesize, and 8 MB for post_max_size.
The default value of the HTTP and HTTPS connector maximum post size is 2MB. However you can adjust the value as per your requirement. The below command to set the connector to accept maximum 100,000 bytes. If the http request POST size exceeds the 100,000 bytes then connector return HTTP/1.1 400 Bad Request.
I don't think there is a limit to the number of variables sent through POST, just on their accumulated size. The limit varies from server to server.
Update: The Suhosin PHP hardening patch can in fact impose a limit on the number of request variables. The default is
2001000. Suhosin is installed by default on Ubuntu, so it could be the reason for your problem. Info courtesy of @Pascal Martin, cheers!
There are two factors to limiting the POST maximum size:
You can find out its value using phpinfo()
.
And the web server's limits:
In your specific case, you may want to add what kind of server you are running this on, and how big the data is. Are the 520 arguments coming anywhere near post_max_size
? What happens if you do a print_r($_REQUEST)
in the receiving script?
Also, in PNP.INI file there is a setting:
max_input_vars
which in my version of PHP: 5.4.16 defaults to 1000.
From the manual: "How many input variables may be accepted (limit is applied to $_GET, $_POST and $_COOKIE superglobal separately)"
Ref.: http://www.php.net/manual/en/info.configuration.php#ini.max-input-vars
Yes, this is controlled by the directive post_max_size, which is 8M by default.
The number of arguments doesn't matter, but you probably exceed the limit in your production.
You can run ini_get('post_max_size') in both environments to see if there is a difference.
You can't change it from ini_set, however it is possible to change the directive from .htaccess.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With