3

問題は、.pl スクリプトが実行されるのではなく、空のファイルとしてダウンロードされることです。

私が読んだ:http://redmine.lighttpd.net/wiki/lighttpd/ApplicationsUsingLighttpd

私のdispatch.fcgiは次のとおりです:(それはusr/bin/にあります

#!perl
#!/usr/bin/perl
use strict;
use CGI::Fast;
use Embed::Persistent; {
my $p = Embed::Persistent->new();
while (new CGI::Fast) {
my $filename = $ENV{SCRIPT_FILENAME};
my $package = $p->valid_package_name($filename);
my $mtime;
if ($p->cached($filename, $package, \$mtime)) {
eval {$package->handler;};
}
else {
$p->eval_file($ENV{SCRIPT_FILENAME});
}
}
}

これは私の lighttpd 設定ファイルの私のコードです:

".pl" =>
((
"fastcgi.debug" => 1,
"bin-path" => "/usr/bin/dispatch.fcgi",
"socket" => "/tmp/fcgi.socket",
"check-local" => "disable",
"min-procs" => 1,
"max-procs" => 5,
"idle-timeout" => 20
))

CGI.pm と cpan モジュールの埋め込みをインストールする必要がありました。サーバーログにエラーは表示されなくなりましたが、前述のとおり、スクリプトはダウンロードされるだけです。

助けてくれてありがとう!

4

4 に答える 4

1

carp にファイルに書き込んでもらい、そこに問題がないか探します。

BEGIN {
use CGI::Carp qw/carpout/;
open LOG, ">>", "carp.log" or die("Cannot open file: $!\n");
carpout(LOG);
}
于 2009-05-19T04:44:13.257 に答える
1

拡張機能に静的除外が設定されていることを確認してください。何かのようなもの...

static-file.exclude-extensions = ( ".php", ".pl" )

または、他のようにファイルをダウンロードするだけです。

于 2010-01-07T05:41:07.877 に答える
1

正しいヘッダーを送信していないようです。CGI モジュールの「header」関数を使用して、ヘッダーを発行します。

$cgi = new CGI;
$cgi->header();

その後、あなたは行く準備ができているはずです。

詳細については、ヘッダーのドキュメントを確認してください。

http://cpansearch.perl.org/src/LDS/CGI.pm-3.43/cgi_docs.html#header

于 2009-05-14T22:27:35.667 に答える
0

ありがとうございました!

#!/usr/bin/perl -w
use strict;
my $cgi = new CGI;
print $cgi->header();
print 'Hello world.';

動作します!しかし、fastcgiとlighttpdで動作させるために、なぜヘッダーを印刷する必要があるのか​​疑問に思っています。私のapacheと通常のcgiサーバーで動作する他の誰かが書いた大きなスクリプトがあります。新しいサーバーで動作するように変更する必要があると思います。

問題は、ヘッダーを印刷すると、実行されるhtmlを印刷するようなことをするため、スクリプトが混乱する可能性があると思います。

再度、感謝します

于 2009-05-15T15:55:21.200 に答える