一次诡异的formData字段消失

起因

使用laravelAdmin制作的一个后台管理系统,其中有一个订单模块,可以编辑响应的订单细项,提交时使用post方法,在laravel中是可以设置根据提交的的_method中的值来确定提交的方法 ,这里设置了_method=put,程序舒舒服服地运行了一段时间~
过了一段时间有人反馈某个订单提交失败,试验了一番,竟然提示405,方法不允许?不允许post?合着我之前的设置的_method没有生效?那之前的表单怎么都可以正常编辑

过程

查找了网上文章后,没有人出现过类似的方法,于是只能自己一步步debug,使用xdebug时发现,
在这个特殊记录中$request->get(’_method’),返回的是null,而其他普通记录都是返回的put,寻思可能是因为提交过多的表单数据量过多引起的,循着这个思路去寻找解决方案…

解决

一开始以为是post_max_size设置的过于小,结果一看,好家伙,设置了100M,我再怎么提交也没有100M啊!ok,换个思路,首先打印了所有request中的请求参数,发现_method竟然没有传输过来?还有_method后面的其他字段也都没有传输过来,怀疑是因为表单项过多而导致丢弃某些表单项,查看了提交的表单数量竟然有1005项,而php中默认最大的表单数量为1000!

结论

只需修改php.ini中的max_input_vars为5000即可!
ps:PHP从5.3.9开始增加一个变量 max_input_vars 用来限制提交的表单数量

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值