我正在尝试构建一个在线“实时聊天”服务,由于许多原因,我发现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/