使用perl的FastCGI - 在共享的Linux webhost上

时间:2014-08-22 05:36:43

标签: linux apache perl .htaccess

我正在尝试建立一个在线"在线聊天"服务,并且由于许多原因我发现FastCGI适合于它(根据其文档),但我似乎无法让它运行。

我正在使用安装了mod_fcgid的Apache 2.2共享主机。 我的.htaccess文件添加了以下行:

AddHandler fcgid-script .fcgi

我的名为fcgitest.fcgi的perl测试脚本如下:

#!/usr/bin/perl
# fcgitest.fcgi

use diagnostics;
use warnings;
use strict;

use CGI;
use CGI::Carp 'fatalsToBrowser'; # tester only!

use FCGI;
my %env; my $in = new IO::Handle; my $out = new IO::Handle; my $err = new IO::Handle; 
my $request=FCGI::Request($in, $out, $err, \%env);
if($request->IsFastCGI()==0) { 
    print "Content-Type: text/plain\n\n"; binmode STDOUT; print "ERR"; exit 0; 
}
my $tm=time();
while($request->Accept() >= 0) {
    my $env=$request->GetEnvironment();
    print "Content-Type: text/plain\n\n"; binmode STDOUT;
    print time()." ".$env;
    if(time()>($tm+60)) { $request->Finish(); exit 0; }
}
print "Content-Type: text/plain\n\n"; binmode STDOUT; print "---"; exit 0;

当我从我的一个页面中调用此脚本时,我收到内部服务器错误,代码500,没有解释,并且在服务器日志文件中没有错误日志。

  1. 我试图隐藏所有代码并只留下print语句,问题依然存在。
  2. 我尝试将文件移动到fcgi-bin目录中,但问题仍然存在。
  3. 我已经检查过perl模块已经安装好了。
  4. 我不知道是什么原因造成了这个错误,因为我的主机供应商说服务器已经为FCGI配置得很好......

1 个答案:

答案 0 :(得分:0)

您使用的共享主机是什么?大多数共享主机已经安装了fcgi,您不需要自己测试fcgi模块。

例如,在godaddy共享主机上,.fcgi / .fpl甚至我的.pl文件都会运行FCGI而不是普通的CGI。没有额外的努力。

为您正在运行的脚本尝试不同的文件权限,例如644,700,750,755。

另外,请尝试添加以下行:

print "Content-type:text/html\n\n";

使用CGI :: Carp后。