4

背景
我使用在 Nginx 上运行的 CodeIgniter 2.1.4 和 PHP 5.3。我有一个 HTML 表单,它表示本质上是同质数据的行。每个“行”都有几个<input />字段,每个字段都具有相同的名称。这是一个简化的示例:

<input type="text" name="firstname[]" />
<input type="text" name="lastname[]" />

所以,我有很多firstname[]输入、lastname[]输入等。提交表单后(操作是POST),我在控制器方法中检索数据,如下所示(注意我使用的是 CodeIgniter):

$firstnames = $this->input->post('firstnames');
$lastnames = $this->input->post('lastnames');

这些变量是包含表单中相应行的值的数组,从这里我对这些数据进行一些处理。

问题
当表单中的行数很大(几百行)时,生成的 PHP 数组的大小与表单中的输入数不匹配——例如,表单可能有 200 个firstname输入,但$firstname数组只有有 167。更重要的是,$lastname变量的大小也不同——166。

当表单的元素数量较少时,一切正常。

我的理论是我超出了堆栈中某处的某种最大大小设置或缓冲区,导致表单数据被截断。是否有我不知道的“最大表单大小”的 PHP 或 CodeIgniter 或 nginx 设置?

对于它的价值,我在使用两者application/x-www-form-urlencodedmultipart/form-data作为表单的内容类型时看到了相同的行为。

我错过了什么?

4

1 回答 1

7

假设没有 suhosin... 然后看:max_input_varsmax_input_nesting_level

当人们想到 PHP 中的 POST 限制时,这些都是较新的并且经常被忽略。

但如果它像你说的那样被截断,那么它可能只是你的post_max_size

另外,这只是一个愚蠢的问题......

PHP max_input_vars 增加最大帖子大小 等。

于 2013-11-01T16:06:08.430 回答