我目前正在运行PHP 5.3.9、Apache 2.2.22和Mandriva 2010.2。
我们曾经在一台旧的PHP4机器上运行,后来我把服务器迁移到了一个新的盒子里,现在一切都在工作(不幸的是,除了一个页面之外,还有一些遗留设置,比如register_globals!)。
这个页面有时会发送一个大的POST请求,当它通过x发送一些东西时(我不确定确切的数字),PHP脚本的行为就好像它根本没有收到任何$_POST一样,并给我未定义的错误。对于较小的POST,它的行为与正常(yay)类似。
POST示例(使用Opera Dragonfly抓取):
grid[153][1] 256663
grid[153][2] 629969
grid[153][3] Some Name
grid[153][4] PSSERVICE
grid[153][5] PS Service (PSSERVICE)
grid[153][6]
grid[153][7]
grid[153][8]
grid[153][10]
grid[153][12]
grid[153][13] 1
grid[153][14] PAYMENT PENDING
grid[154][0] 2012-03-04
grid[154][1] 256343
grid[154][2] 630133
grid[154][3] Some Other
grid[154][4] PSSERVICE
grid[154][5] PS Service (PSSERVICE)
grid[154][6] 0
grid[154][7] 0
grid[154][8] 0
grid[154][10] 0
grid[154][12] 0
grid[154][13] 0
grid[154][14] JOB
.... etc,etc,etc.....
total_tech_val 2481.1118181818
total_parts 414.99
total_traveltime 152.44
total_adjustment 0
total_net_val 2481.1118181818
我尝试过在php.ini文件中增加限制,这里有几个例子:
post_max_size = 32M
max_execution_time = 60
max_input_time = 60
max_input_vars = 5000
memory_limit = 128M
是什么导致了这种奇怪的行为?
注意:输出中(除了未定义的错误外,E_ALL处于打开状态)或错误日志中没有给出任何错误。
编辑:在执行"var_dump($_REQUEST);"时,我得到了网格的第一部分[][],但缺少了其他所有内容。(进入元素[76][13]左右)。因此,它看起来好像达到了极限并被切断了
我在管理suhosin分机。
phpinfo可在http://jsfiddle.net/QVEK3/
确保php.ini配置文件没有限制发送的数据。
关注这些变量:
post_max_size = 32M
max_execution_time = 60
max_input_time = 60
max_input_vars = 5000
memory_limit = 128M
suhosin.post.max_vars = 3000
suhosin.post.max_array_index_length = 400
suhosin.post.max_array_depth = 200
suhosin.request.max_array_depth = 200
suhosin.request.max_array_index_length = 400
suhosin.request.max_vars = 3000