2009-05-13 10 views
3

問題は私の.plスクリプトが実行されずに空のファイルとしてダウンロードされることです。fast-cgiとlighttpdでperlスクリプトを実行しようとしていますが、ただファイルをダウンロードしようとしています

私が読んで: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モジュールをインストールする必要がありました。 私のサーバーログには何のエラーもありませんが、私が言ったようにスクリプトはただダウンロードします。

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

+0

'このスクリプトは、dispatch.plスクリプトまたはそれから実行しようとしているスクリプトですか? – ijw

答えて

1

正しいヘッダーを送信していないようです。 CGIモジュールの "header"機能を使用してヘッダを出力してください。

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

あなたはすごくいいはずです。詳細については

は、ヘッダーのドキュメントをチェックアウト:

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

+0

print $ cgi-> header; - 単独では出力されません。 – ijw

0

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

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

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

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

おかげで再び

+0

CGI仕様では、クライアントが解釈する実際のコンテンツの先頭にヘッダーを付加する必要があります。 – hillu

1

ファイルへのコイの書き込みがあり、問題のためにそこに見えます。

BEGIN { 
use CGI::Carp qw/carpout/; 
open LOG, ">>", "carp.log" or die("Cannot open file: $!\n"); 
carpout(LOG); 
} 
1

拡張子に静的除外が設定されていることを確認してください。それだけで、他のようなファイルをダウンロードします

か何かのような...

静的-file.exclude-拡張子=( "の.php"、 ".plという")。

関連する問題