获得$ ENV {'QUERY_STRING'}的奇怪问题

时间:2010-12-10 18:41:38

标签: perl apache fastcgi httprequest varnish

我在这里遇到一个奇怪的问题。我正在将一个(工作)站点移动到一个我无法直接访问的新apache服务器(我必须通过两个人来完成这些工作)。

该网站使用名为adframe的perl脚本来解析html模板。调用它的网址看起来像/cgi-bin/adframe/index.html?x=something,其中adframe是脚本。丢失的后缀从未引起任何实际问题。但是在这个新的Ubuntu服务器上$ENV{'QUERY_STRING'}总是空的。 $ENV{'REQUEST_METHOD'}正确显示为GET,但query_string没有显示任何内容......

Regular * .cgi脚本显示query_string没有问题。

从日志中我收集到服务器似乎正在运行fastcgi,mod_fcgid,服务器甚至不接受.pl作为脚本的扩展。我没有那么多的服务器软件经验,但我认为服务器不接受adframe作为cgi脚本可能会出现问题,因此无法正确传递query_string ...任何人都可以给我一些提示可以指出管理员或者我可以在.htaccess自己做的事情吗?无论如何要确保adframe被认为是cgi脚本!? (如果那是问题......)

任何帮助表示赞赏! 托马斯

编辑:我发现了更多细节:服务器似乎正在运行VARNISH缓存...这是我常用配置的主要区别...... 此外,脚本的工作方式是,如果你调用/cgi-bin/adframe/somedir/somefile.html?x=something, $ ENV {PATH_INFO}告诉解析哪个模板,$ ENV {QUERY_STRING}就是,请求参数。现在查询字符串为空,但如果我调用/ cgi-bin / adframe?x = something(没有任何PATH_INFO),查询字符串会显示出来! 有谁知道这里发生了什么? 谢谢!

2 个答案:

答案 0 :(得分:1)

知道了。 VARNISH缓存从静态内容(* .html等)... phew

中删除所有查询字符串

答案 1 :(得分:0)

刚遇到同样的问题。我是perl脚本编写的新手。

我试过以下:

@values = split (/&/, $ENV{'QUERY_STRING'});

但它没有用

这有效:

@values = split (/&/, "$ENV{'QUERY_STRING'}");

以防万一其他新手遇到同样的问题。