PHP中长长度GET请求的proof_xml参数无法打印的问题及解决
解决GET请求中长参数
proof_xml无法获取的问题 我之前碰到过完全一样的情况:需要通过GET方法原样输出请求里的proof_xml参数内容,虽然请求里带了好几个属性,但我只需要打印这个proof_xml。结果尝试用$_GET['proof_xml']输出的时候,居然是空的!
排查过程
一开始我反复检查请求URL,确认proof_xml参数确实被正确传递了,但就是拿不到值。后来才意识到,问题出在GET变量的长度限制上——这个proof_xml的内容太长,超过了服务器默认允许的最大长度,导致PHP直接截断了这个参数,所以$_GET里根本找不到它。
解决方法
这个问题是Suhosin安全扩展的限制导致的,只需要修改php.ini配置文件就能解决:
- 找到你的服务器上的
php.ini文件(不同环境路径可能不一样,比如Linux下常见/etc/php.ini,Windows下可能在PHP安装目录里) - 在文件中找到或者添加配置项:
(这里的3000是根据需求设置的长度,如果你的suhosin.get.max_value_length = 3000proof_xml更长,可以调大这个数值) - 重启你的PHP服务(比如Apache、Nginx或者PHP-FPM,根据你的运行环境来)
改完之后再试,$_GET['proof_xml']就能正常获取到完整的参数内容了!
内容的提问来源于stack exchange,提问作者Murad Ali
相关产品推荐
相关产品推荐

