簡體   English   中英

在apache中將cgi部署到psgi轉換的應用程序

[英]deploying cgi to psgi converted application in apache

#!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服務器中以http://localhost/cgi-bin/cgi.pl運行此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 :: PSGI文檔建議CGI :: Emulate :: PSGI )將接受您的PSGI列表並為您轉換為CGI。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM