我在这里遇到一个奇怪的问题。我正在将一个(工作)站点移动到一个我无法直接访问的新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),查询字符串会显示出来! 有谁知道这里发生了什么? 谢谢!答案 0 :(得分:1)
知道了。 VARNISH缓存从静态内容(* .html等)... phew
中删除所有查询字符串答案 1 :(得分:0)
刚遇到同样的问题。我是perl脚本编写的新手。
我试过以下:
@values = split (/&/, $ENV{'QUERY_STRING'});
但它没有用
这有效:
@values = split (/&/, "$ENV{'QUERY_STRING'}");
以防万一其他新手遇到同样的问题。