我有一个很长的查询字符串变量(值大约600个字符),我试图从PHP脚本到达。 $_REQUEST
或$_GET
中不存在长的,但是值长度较短的另一个变量是。我已经削减了一些进行测试,当值达到549或更高时,它开始失踪。
幸运的是,$_SERVER["QUERY_STRING"]
中存在long变量,所以现在我只是从那里拿起它,但是好奇这是服务器设置(Apache 2)还是我的PHP设置( 5.2.17)或脚本?
答案 0 :(得分:10)
也许你有一个hardend/suhosin版本的php。它提供了配置指令来限制输入参数的名称和值的长度。
suhosin.get.max_name_length
Type: Integer Default: 64定义通过URL注册的变量的变量名的最大长度。对于数组变量,这是索引前面的名称。
suhosin.get.max_totalname_length
Type: Integer Default: 256定义通过URL注册时总变量名称的最大长度。对于数组变量,这包括所有索引。
suhosin.get.max_value_length
Type: Integer Default: 512定义通过URL注册的变量的最大长度。
答案 1 :(得分:2)
我刚刚在Debian Wheezy的PHP 5.4中遇到过这个问题,它不使用suhosin。我终于发现这个用户注释隐藏在the parse_str()
page上,php.ini设置中的max_input_vars
控制了此版本PHP中读取的变量parse_str()
的数量。
另请注意,即使您使用的是CLI运行时,max_input_vars
也适用。