Edit report at https://bugs.php.net/bug.php?id=55810&edit=1
ID: 55810 Comment by: the dot aloner at gmail dot com Reported by: clemens dot schwaighofer at e-graphics dot com Summary: cannot have more than 1000 entries in the _POST array Status: Not a bug Type: Bug Package: Scripting Engine problem Operating System: Linux PHP Version: 5.3.8 Block user comment: N Private report: N New Comment: I'm having this problem on 5.3.13 without Suhosin. Is there anything I can check? Here is the result of the test: PHP VERSION: 50313 Original data: 1010 POST DATA: 1000 ERROR: POST count is smaller than original data count Previous Comments: ------------------------------------------------------------------------ [2011-09-30 01:15:05] clemens dot schwaighofer at e-graphics dot com Actually it is not only the post.max_vars, but also the request.max_vars ------------------------------------------------------------------------ [2011-09-29 13:45:37] cataphr...@php.net This is due to suhosin (see suhosin.post.max_vars). Note that we do NOT provide support for suhosin. ------------------------------------------------------------------------ [2011-09-29 06:57:19] clemens dot schwaighofer at e-graphics dot com Description: ------------ System is PHP 5.3.8 on Apache 2.2.x on various systems. Debian packages and self compiled packages. Problem: If a script sends more than 1000 _POST entries everything above 1000 is ignore. This bug does not exist in 5.3.5, but also appears in 5.3.6 The Post MAX size is on all systems at least 20MB or more, but the size does not matter it is the element count in _POST that triggers the error Test script: --------------- <? // possible bug in php 5.3.6-13 of debian/testing // too large post data gets truncated // write POST log $fp = fopen(getcwd().'/DEBUG.LOG', 'a'); fwrite($fp, '['.date('Y-m-d H:i:s').'] ====>'."\n"); fwrite($fp, var_export($_POST, true)."\n"); fwrite($fp, '['.date('Y-m-d H:i:s').'] ====>'."\n"); fclose($fp); // test if limit is really 1000 for ($i = 1; $i <= 1010; $i ++) { $data['pos_'.$i] = 'DATA: '.$i; } ?> <html> <head> <title>POST debug test</title> </head> <body> PHP VERSION: <?=PHP_VERSION_ID;?><br> <div style="color: red;"> <? if (is_array($_POST)) { print "Original data: ".count($data)."<br>"; print "POST DATA: ".count($_POST)."<br>"; if (count($_POST) < count($data)) print "ERROR: POST count is smaller than original data count<br>"; } ?> </div> <form method="post"> <? foreach ($data as $key => $value) { ?> <input type="hidden" name="<?=$key;?>" value="<?=urldecode($value);?>"> <? } ?> <input type="submit" name="send_post" value="Send POST"> </form> </body> </html> Expected result: ---------------- _POST should keep all the sent entries and not cut at 1000. PHP VERSION: 50305 Original data: 1010 POST DATA: 1032 Actual result: -------------- _POST truncates all above >1000 PHP VERSION: 50306 Original data: 1010 POST DATA: 1000 ERROR: POST count is smaller than original data count PHP VERSION: 50308 Original data: 1010 POST DATA: 1000 ERROR: POST count is smaller than original data count ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=55810&edit=1