在共享Linux webhost上使用perl的FastCGI
我正在尝试建立一个在线“实时聊天”服务,出于许多原因,我发现FastCGI适合于此(根据其文档),但我似乎无法让它运行 我正在使用安装了mod_fcgid的Apache 2.2共享主机。 My.htaccess文件添加了以下行:在共享Linux webhost上使用perl的FastCGI,linux,apache,perl,.htaccess,Linux,Apache,Perl,.htaccess,我正在尝试建立一个在线“实时聊天”服务,出于许多原因,我发现FastCGI适合于此(根据其文档),但我似乎无法让它运行 我正在使用安装了mod_fcgid的Apache 2.2共享主机。 My.htaccess文件添加了以下行: AddHandler fcgid-script .fcgi 我的名为fcgitest.fcgi的perl测试脚本如下所示: #!/usr/bin/perl # fcgitest.fcgi use diagnostics; use warnings; use stri
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配置得很好 您使用的是什么共享主机?大多数共享主机已经安装了fcgi,您不需要自己测试fcgi模块 例如,在godaddy共享主机上,.fcgi/.fpl甚至我的.pl文件都会在fcgi上运行,而不是在普通CGI上运行。没有额外的努力 为正在运行的脚本尝试不同的文件权限,如644700750755 此外,请尝试添加行:
print "Content-type:text/html\n\n";
使用CGI::Carp行后 当您以与apache服务器相同的用户身份从命令行运行“perl-c fcgitest.fcgi”时会发生什么情况?我没有shell访问权限…您如何部署自己的fastcgi处理程序?为什么要将stdout置于binmode以发送文本/纯文本?我也尝试过,它仍然无法工作,这有点牵强。。。如果权限不是755,则error.log包含有关它的内容。至于标题,我一开始就试过了,结果是一样的。。。所以连线…我认为你错过了这个,在第2行添加这个:使用cPanelUserConfig;因为您使用的是共享主机,所以应该安装cpanel或类似的东西。是哪一个?请检查一些控制面板。。。将所有非核心模块分开放置,需要添加类似于上述的线路来调用它们。请检查,您的案例中需要哪一个。是的,我正在使用cPanelYou可能希望通过单击cpanel中的图标转到Perl模块,检查Perl模块的路径,并将其作为第2行添加到脚本中。此外,请确保已安装在脚本中调用的模块。。检查那一页上的列表。