我正在尝试构建一个在线“实时聊天”服务,由于许多原因,我发现FastCGI适合(根据其文档),但是我似乎无法使其运行。

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

AddHandler fcgid-script .fcgi


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

#!/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,没有解释,也没有错误日志。


我试图隐藏所有代码,只保留打印语句,问题仍然存在。
我尝试将文件移至fcgi-bin目录,但问题仍然存在。
我检查过perl模块是否安装正确。


我不知道是什么原因导致此错误,因为我的托管供应商说服务器针对FCGI进行了正确配置。

最佳答案

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

例如,在godaddy共享主机上,.fcgi / .fpl甚至我的.pl文件都将在FCGI而非普通CGI上运行。无需额外的努力。

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

另外,尝试添加以下行:

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


使用CGI :: Carp行之后。

关于linux - 带有perl的FastCGI-在共享的Linux webhost上,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25440199/

10-13 02:35