我已经好几周都在研究这个问题了。
我有一个管理用户个人资料安全权限的表单。 表单提交数组权限[],每个键是权限名称,另一个数组作为值,使用state =>布尔和继承=> 0/1。
像这样:
permissions => [
'per1' => [
'stat' => true,
'inherited' => 0
],
'per2' => [
'stat' => false,
'inherited' => 1
],
(...)
]
提交帖子后,$ _POST数组上有一个点,数据被截断并损坏。不只是缺少字段。缺少一大块数据。
以下是输出示例。
"permissions[pos.delete][state]" => "true"
"permissions[pos.delete][inherited]" => "1"
"permissions[pos.edit][state]" => "true"
"permissions[pos.edit][inherited]" => "1"
"permissions[pos.visit_day][stons[uservoucher.view][inherited]" => "1"
"permissions[wallet][state]" => "true"
"permissions[wallet][inherited]" => "1"
"permissions[webgis][inherited]" => ""
"permissions[webgis.map.circuits.edit][inherited]" => ""
"permissions[webgis.map.circuits.edit.all][inherited]" => ""
"permissions[webgis.map.edit][inherited]" => ""
"permissions[webgis.map.view][inherited]" => ""
"permissions[webgis.report.circuit][inherited]" => ""
"permissions[webgis.report.circuit.all][inherited]" => ""
在第5行你可以看到我的问题。似乎一部分后期数据丢失或被截断,数组重叠。
我运行了一个tcpdump并使用wireshark检查转储,整个帖子数据似乎没问题。这是tcpdump的部分。
permissions%5Bpos.delete%5D%5Bstate%5D=true&permissions%5Bpos.delete%5D%5Binherited%5D=1&permissions%5Bpos.edit%5D%5Bstate%5D=true&permissions%5Bpos.edit%5D%5Binherited%5D=1&permissions%5Bpos.visit_day%5D%5Bstate%5D=true&permissions%5Bpos.visit_day%5D%5Binherited%5D=1&permissions%5Bproducts%5D%5Bstate%5D=true&permissions%5Bproducts%5D%5Binherited%5D=1&permissions%5Bproducts.all%5D%5Bstate%5D=true&permissions%5Bproducts.all%5D%5Binherited%5D=1&permissions%5Bproducts.create%5D%5Bstate%5D=true&permissions%5Bproducts.create%5D%5Binherited%5D=1
转储上的数据似乎正常。但是在$ _POST和php://输入上,数据似乎被截断或损坏。 这是执行var_dump的部分(file_get_contents('php:// input'))
permissions%5Bpos.delete%5D%5Bstate%5D=true&permissions%5Bpos.delete%5D%5Binherited%5D=1&permissions%5Bpos.edit%5D%5Bstate%5D=true&permissions%5Bpos.edit%5D%5Binherited%5D=1&permissions%5Bpos.visit_day%5D%5Bstons%5Buservoucher.view%5D%5Binherited%5D=1&permissions%5Bwallet%5D%5Bstate%5D=true&permissions%5Bwallet%5D%5Binherited%5D=1&permissions%5Bwebgis%5D%5Binherited%5D=
在centOs 6专用服务器上运行nginx 1.8.0和php 5.6.10
这是我实际的php.ini最大设置:
max_execution_time => 0 => 0
max_file_uploads => 20 => 20
max_input_nesting_level => 512 => 512
max_input_time => -1 => -1
max_input_vars => 10000 => 10000
post_max_size => 100M => 100M
upload_max_filesize => 2M => 2M
想法?感谢。