如何在perl mason CGIHandler中获取QUERY_STRING



我需要对Mason网站进行一些维护,该网站在一家托管公司运行良好,但需要转移到另一家托管公司。新的托管公司不支持ApacheHandler,所以我将代码改为CGIHandler。

不幸的是,我不再将QUERY_STRING元素填充到mason环境中,这使它变得有点困难!

我从这里得到了大量的处理程序代码:http://joe.pepersack.net/code/site-mason_handler.pl

处理程序是这样设置的:

$h = HTML::Mason::CGIHandler->new(
  comp_root     => $mason_root,
  data_dir      => $mason_data,
  allow_globals => $::MASON_GLOBALS,
  error_mode    => "output",
  default_escape_flags => "h"
);

在网上搜索没有任何好的结果…

有人知道ApacheHandler和CGIHandler之间的参数传递是否有差异吗?如果它们在其他地方被吃掉,我如何测试CGIHandler是否首先找到了参数?

任何帮助(或额外的引导问题)将是最感激的。这个网站是为一个青年筹款人准备的,所以现在没有太多的时间来重写它。

根据此http://marc.info/?l=mason&m=96320172801620&w=3)和我的经验,它应该在$ENV{QUERY_STRING}中可用。

也许你的设置累了使用它从Apache::请求直接或CGI服务器没有设置这个自动?

从http://cpansearch.perl.org/src/jswartz/html

1.46 -梅森-/- htdocs/cgihandler.html:

该模块还提供了一个$r请求对象供内部使用组件,类似于Apache下的请求对象HTML::Mason::ApacheHandler,但功能有限。

基于此:http://redmine.lighttpd.net/projects/lighttpd/wiki/MasonRecipe/11

### this seems to be necessary as lighttpd does not provide the PATH_INFO and the QUERY_STRING environment variables
## right' way to parse the REQUEST_URI out into PATH_INFO and QUERY_STRING
my $uri = $ENV{REQUEST_URI};
if ($uri =~ /?/) {
  $uri =~ /^(.*?)?(.*)/;
  $ENV{PATH_INFO} = $1;
  $ENV{QUERY_STRING} = $2;
} else {
  $ENV{PATH_INFO} = $uri;
  $ENV{QUERY_STRING} = "";
}

感谢调试帮助。根据您的想法,我确定mason无法使用$ENV{QUERY_STRING},这使我回过头来检查apache。果然,有一个重写规则没有[QSA],所以它正在吃掉查询字符串。

相关内容

  • 没有找到相关文章

最新更新