mod_perl下的JSON::XS在POST请求时失败



我在Ubuntu 16.04.1 LTS上使用默认安装的Apache和mod_perl,我也用默认的JSON::XS复制了这个,我从CPAN JSON-XS-3.02更新到最新的。

如果我不使用mod_perl,下面的代码在所有情况下都可以工作。

下面的脚本和html工作时,通过mod_cgi perl与POST和GET请求。

然而,如果我使用mod_perl和我使用POST(如所提供的html),它失败了,"Hello"不打印,我在apache日志文件中得到以下错误。

用法:JSON:: XS::新(klass)。

如果我通过GET方法传递相同的参数,脚本可以正常工作。

test2.pl

#!/usr/bin/perl
use strict;
use warnings;
use CGI;
use JSON::XS;
my $q = new CGI();
print $q->header(-type => 'text/plain');
my $action = $q->param('a');
my $json_str = '{"foo":"bar"}';
my $pscalar = JSON::XS->new->utf8->decode($json_str);
print "Hello";
exit 1;

HTML调用上面的(在服务器上命名为test2.pl)

<html>
<body>
<form action="test2.pl" method="POST">
<input type="text" name="a"/>
<button type="submit">
</form>
</body>
</html>

好的,所以这是一个相当徒劳的追逐,分析apache核心转储和堆栈跟踪,修复错误,并不真的存在…长话短说。

我试图添加一个包含目录到我的perl使用

PerlSwitches - i/usr/地方/lib/site_perl/my_new_directory

作为其中一部分,我添加了

PerlOptions +Parent,这样我就可以为每个虚拟主机获得一个新的解释器,这样我的-I一次只对一个虚拟主机有效。

在我启用mod_perl之前我已经添加了这些标志,所以当我启用mod_perl时,它就是不工作。

通过删除PerlOptions +Parent,事情开始像预期的那样工作。

作为旁注,+Parent似乎使事情变得不稳定。

相关内容

  • 没有找到相关文章

最新更新