大型$_POST数组中的末尾元素丢失(PHP)

3
我有一个表单,里面有很多元素。当保存表单时,最后三分之一左右的 $_POST 变量没有被保存。页面并不会无限期地加载或者出现其他问题——它几乎立即就保存了,但是这个数组的最后三分之一却没有被保存到数据库中。
问题在于——我把代码放在了两个不同的服务器上。大数组在其中一个服务器上可以正常工作。而新服务器则存在问题。
我已经检查了所有明显的 php.ini 设置,并且在所有情况下,新服务器的值都等于或者大于旧服务器的值。我检查过的内容包括:
max_execution_time:90 post_max_size:256M upload_max_filesize:256M
唯一的区别是新服务器有一个单独的 DB 服务器。
有人有任何建议吗?

你可以发布你的表单代码(HTML和任何可能与之交互的javascript),以及接收脚本的代码。当你说数据没有被“保存”时,这是什么意思?数据没有被POST?数据已经被POST但没有保存到数据库中? - Mike Brant
2
可能存在重复的问题:https://dev59.com/nGox5IYBdhLWcg3wJxH4 - Patrick Moore
我也会查看您的 memory_limit 配置设置。 - Patrick Moore
我们绝对需要代码! - Francisco Corrales Morales
没有JavaScript交互。这是一个简单的表单,提交到一个新页面,循环遍历多维数组,并将值保存到MySQL数据库中。代码本身没有问题,因为如上所述,在第一台服务器上运行良好。这是一个服务器问题。 - Randall Jamison
1个回答

2

尝试增加max_input_vars设置。

max_input_vars设置限制表单中可以提交的字段数量。在我的经验中,当来自表单的 $_POST 数组神秘地被截断时,通常是因为此设置过低。理想情况下,应该在发生这种情况时显示警告,但我发现这通常不是这样的。

更多信息请查看:http://www.virendrachandak.com/techtalk/big-forms-and-php-max_input_vars/


1
你能详细说明一下这个答案吗?它有点简略。也许可以解释一下为什么那个设置可能是关键? - Jordan Kasper

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