Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在共享Linux webhost上使用perl的FastCGI_Linux_Apache_Perl_.htaccess - Fatal编程技术网

在共享Linux webhost上使用perl的FastCGI

在共享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

我正在尝试建立一个在线“实时聊天”服务,出于许多原因,我发现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 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,服务器日志文件中没有解释和错误日志

  • 我试图隐藏所有代码,只留下print语句,问题仍然是一样的
  • 我尝试将文件移动到fcgi-bin目录,但问题仍然存在
  • 我已经检查了perl模块是否安装良好

  • 我不知道是什么原因导致了这个错误,因为我的主机供应商说服务器为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行添加到脚本中。此外,请确保已安装在脚本中调用的模块。。检查那一页上的列表。