![](/img/trans.png)
[英]How to turn a static CGI-style perl script(xxx.pl) to a dynamic PSGI application?
[英]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.