【问题标题】:Trying to run perl scripts with fast-cgi and lighttpd, but file just downloads尝试使用 fast-cgi 和 lighttpd 运行 perl 脚本,但文件只是下载
【发布时间】:2009-05-13 23:08:36
【问题描述】:

问题是我的 .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 模块。 现在我的服务器日志中没有任何错误,但正如我所说,脚本只是下载。

感谢您的帮助!

【问题讨论】:

  • 'The' 脚本是哪个,dispatch.pl 脚本还是您尝试从中运行的脚本?

标签: perl fastcgi lighttpd


【解决方案1】:

看来您发送的标头不正确。使用 CGI 模块中的“header”函数来发出 headers

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

那你应该可以走了。

有关更多信息,请查看标头文档:

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

【讨论】:

  • 打印 $cgi->header; - 它不会自己输出。
【解决方案2】:

让 carp 写入文件并在那里查找问题。

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

【讨论】:

    【解决方案3】:

    确保为扩展设置了静态排除。比如……

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

    或者它只会像其他任何文件一样下载文件。

    【讨论】:

      【解决方案4】:

      谢谢!

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

      有效!但是,我想知道为什么我需要打印标题才能使其与 fastcgi 和 lighttpd 一起使用。我有一个其他人编写的大型脚本,可以在我的 apache 和常规 cgi 服务器上运行。我想我必须修改它才能在我的新服务器上工作。

      问题是我认为打印标题可能会弄乱脚本,因为它执行的操作类似于打印执行的 html。

      再次感谢

      【讨论】:

      • CGI 规范要求在客户端解释的实际内容前附加一个标头。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-01
      • 1970-01-01
      • 2015-03-24
      • 2013-05-02
      • 2014-03-05
      • 2012-12-28
      相关资源
      最近更新 更多