我正在尝试建立一个在线"在线聊天"服务,并且由于许多原因我发现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,没有解释,并且在服务器日志文件中没有错误日志。
我不知道是什么原因造成了这个错误,因为我的主机供应商说服务器已经为FCGI配置得很好......
答案 0 :(得分:0)
您使用的共享主机是什么?大多数共享主机已经安装了fcgi,您不需要自己测试fcgi模块。
例如,在godaddy共享主机上,.fcgi / .fpl甚至我的.pl文件都会运行FCGI而不是普通的CGI。没有额外的努力。
为您正在运行的脚本尝试不同的文件权限,例如644,700,750,755。
另外,请尝试添加以下行:
print "Content-type:text/html\n\n";
使用CGI :: Carp后。