我正在尝试建立一个在线"实时聊天"服务,并且由于许多原因,我发现FastCGI适合于此(根据其文档),但我似乎无法让它运行。
我使用Apache 2.2与mod_fcgid安装共享主机。我的。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/plainnn"; binmode STDOUT; print "ERR"; exit 0;
}
my $tm=time();
while($request->Accept() >= 0) {
my $env=$request->GetEnvironment();
print "Content-Type: text/plainnn"; binmode STDOUT;
print time()." ".$env;
if(time()>($tm+60)) { $request->Finish(); exit 0; }
}
print "Content-Type: text/plainnn"; binmode STDOUT; print "---"; exit 0;
当我从我的一个页面内调用这个脚本,我得到内部服务器错误,代码500,没有解释,没有错误日志在服务器日志文件。
- 我试图隐藏所有的代码,只留下打印语句,问题仍然相同。 我尝试将文件移动到fgi -bin目录,但问题仍然存在。
- 我已经检查了perl模块已经安装好了。
我不知道什么会导致这个错误,因为我的主机供应商说服务器是为FCGI配置好的…
您使用的是哪种共享主机?大多数共享主机都已经安装了fcgi,您不需要自己测试fcgi模块。
例如,在godaddy共享主机上,.fcgi/。fpl,甚至我的。pl文件将运行FCGI而不是正常的CGI。不需要额外的努力。
尝试不同的文件权限,如644,700,750,755的脚本正在运行。
另外,试着添加一行:
print "Content-type:text/htmlnn";
后使用CGI::鲤鱼行。