Попытка запустить Perl-скрипты с fast-cgi и lighttpd, но файл только скачивается - PullRequest
3 голосов
/ 14 мая 2009

Проблема в том, что мой скрипт .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 ]

1 голос
/ 07 января 2010

Убедитесь, что для расширений установлено статическое исключение. Что-то вроде ...

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

Или он просто загрузит файл, как и любой другой.

1 голос
/ 19 мая 2009

Попросите карпа записать файл и поищите проблемы.

BEGIN {
use CGI::Carp qw/carpout/;
open LOG, ">>", "carp.log" or die("Cannot open file: $!\n");
carpout(LOG);
}
1 голос
/ 15 мая 2009

Похоже, вы не отправляете правильные заголовки. Используйте функцию «заголовок» в модуле CGI для вывода заголовков

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

Тогда тебе надо идти.

Для получения дополнительной информации ознакомьтесь с документацией заголовка:

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

0 голосов
/ 15 мая 2009

Спасибо!

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

работает! Но мне интересно, зачем мне нужно печатать заголовки, чтобы он работал с fastcgi и lighttpd. У меня есть большой скрипт, который кто-то написал, который работает на моем apache и обычном cgi-сервере. Я думаю, мне нужно изменить его для работы на моем новом сервере.

Проблема в том, что печать заголовка может испортить сценарий, потому что он выполняет что-то вроде печати html, который выполняется.

Еще раз спасибо

...