在 Apache 中部署 CGI 到 PSGI 转换的应用程序


#!C:/perl/bin/perl.exe
use CGI;
my $q = CGI->new;
print $q->header('text/plain'),
    "Hello ", $q->param('name');
#CONVERTED PSGI PAGE
#!C:/perl/bin/perl.exe
use CGI::PSGI;
my $app = sub {
    my $env = shift;
    my $q = CGI::PSGI->new($env);

    return [ 
        $q->psgi_header('text/plain'),
        [ "Hello ", $q->param('name') ],
    ];
};

我在 apache 服务器中运行此 cgi.pl http://localhost/cgi-bin/cgi.pl

但我无法在 apache 服务器中运行转换后的 psgi.pl它的显示请帮忙内部服务器错误服务器遇到内部错误或配置错误,无法完成您的请求。请与服务器管理员联系,admin@example.com 告知他们此错误发生的时间以及您在此错误之前执行的操作。有关此错误的详细信息,请参阅服务器错误日志。

CGI和PSGI是Web服务器和外部程序通信方式的两种不同规范。

在 CGI 下,Web 服务器期望从程序接收文本输出,包括 HTTP 响应标头、空行和程序呈现的 HTML。

CGI 模块为 apache 服务器实现此逻辑,如果程序的输出不符合,apache 将报告 500 错误。

在 PSGI 下,Web 服务器期望程序返回一个由 HTTP 响应代码、HTTP 响应标头和程序呈现的 HTML 组成的三元素列表。

因此,您可以看到符合PSGI规范的程序会混淆mod_cgi。

所以你需要安装一个实现PSGI的apache模块,或者使用一个Perl模块(CGI::P SGI文档建议CGI::Emulate::P SGI),它将接受你的PSGI列表并为你转换为CGI。

相关内容

  • 没有找到相关文章

最新更新