You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

PHP多文本框数组POST异常:提交1000行仅返回10行求助

问题排查与解决:表单提交数组被截断至10个元素

看起来你遇到的问题是Suhosin扩展的数组索引限制在搞鬼,和你已经调整的那些变量数量、内存类参数无关。

问题根源

你已经放开了max_input_varssuhosin.post.max_vars这些变量总数的限制,但Suhosin还有一个极易被忽略的参数:suhosin.post.max_array_index(对应全局请求的是suhosin.request.max_array_index),它的默认值是10。这个参数会直接限制POST/请求中数组的最大索引值,当数组索引超过设定值时,超出部分的元素会被自动截断。

你的表单逻辑里,每个textj[]数组会生成1000个元素,索引从0到999,远远超过了默认的10,所以最终只保留了前10个元素(索引0-9)。

解决方案

在你的php.ini配置文件中添加或修改以下参数:

# 按需设置,比如匹配你的1000行数据需求
suhosin.post.max_array_index = 1000
suhosin.request.max_array_index = 1000

如果想彻底取消数组索引的限制,可以设为-1

suhosin.post.max_array_index = -1
suhosin.request.max_array_index = -1

修改完成后,记得重启你的Web服务器(比如Apache、Nginx)或者PHP-FPM进程,让新配置生效。

验证

重启服务后重新提交表单,你应该就能看到每个textj[]数组都包含完整的1000个元素了。

内容的提问来源于stack exchange,提问作者Sohil Sardhara

火山引擎 最新活动