缺少长查询字符串变量

时间:2011-12-13 07:55:34

标签: php apache query-string

我有一个很长的查询字符串变量(值大约600个字符),我试图从PHP脚本到达。 $_REQUEST$_GET中不存在长的,但是值长度较短的另一个变量是。我已经削减了一些进行测试,当值达到549或更高时,它开始失踪。

幸运的是,$_SERVER["QUERY_STRING"]中存在long变量,所以现在我只是从那里拿起它,但是好奇这是服务器设置(Apache 2)还是我的PHP设置( 5.2.17)或脚本?

顺便说一句,查询字符串本身不是我控制的东西,所以不幸的是我不能改变它的工作原理,例如。通过POST发送。

2 个答案:

答案 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也适用。