我正在尝试弄清楚为什么 Perl 中的 nph- 脚本会在浏览器中损坏。这是代码:
#!/usr/bin/perl
print "Content-Type: text/plain\n\n";
print "FOO";
我给它命名nph-测试.cgi,然后从浏览器运行,我得到:
如果我复制相同的代码,并将其命名为测试文件,结果很好:
Apache 配置是:
<Directory "/home/foo/web/example.org/*">
Options +ExecCGI +FollowSymLinks +MultiViews
AllowOverride AuthConfig
PerlResponseHandler ModPerl::Registry
AddHandler perl-script .cgi .pl
Options +ExecCGI
PerlOptions +ParseHeaders
AllowOverride All
Require all granted
</Directory>
我究竟做错了什么?
版本如下:
阿帕奇2.4.18 Perl5.22.1
答案1
好吧,这不是我期待的解决方案,但已经成功了。我所有的nph-脚本位于 /cgi-bin/admin 文件夹中,因此我将其添加为 Apache 配置的一部分,以将其从 mod_perl 中删除:
<Directory "/home/user/web/example.com/public_html/cgi-bin/admin">
Options MultiViews FollowSymLinks
AllowOverride All
Require all granted
AddHandler cgi-script .cgi .pl
Options +ExecCGI
Options FollowSymLinks
</Directory>
看来 mod_perl 搞砸了未解析的标头,但这有点超出我的能力范围。只要这个能用,我想就没问题了 :)(只是想把它发布出来,以防其他人遇到同样的问题)