我试图让安装mod_fcgid后再次运行一个旧的Perl脚本。 我不得不为新客户端安装mod_fcgid,但似乎已经破坏了我的其他一些cgi脚本。
进入页面时,现在有500个错误。 我检查了错误日志,并从脚本的输出是在错误日志…所以脚本正在运行,但由于某种原因,它仍然提供了一个500内部服务器错误的浏览器…
HTML头是打印的第一件事…所以我不知道为什么这个错误发生。
错误日志:
[略:html输出] [Wed Dec 08 08:59:18 2010] [警告](104)通过peer重置连接:mod_fcgid:从fastcgi服务器错误中读取数据。 [Wed Dec 08 08:59:18 2010] [错误] [客户端xxxx]脚本标题过早结束:www_protect.cgi,referer:http://www.mywebsite.net/ [Wed Dec 08 08:59:21 2010] [notice] mod_fcgid:process /www/sites/somescript.cgi(6747)exit(通讯错误),通过调用exit()终止,返回码:0
fcgi.conf:
AddHandler fcgid-script .fcgi .cgi #SocketPath / var / lib / apache2 / fcgid / sock IPCConnectTimeout 45 IPCCommTimeout 20 OutputBufferSize 0 MaxRequestsPerProcess 500 IdleTimeout 3600 ProcessLifeTime 7200 MaxProcessCount 8 DefaultMaxClassProcessCount 2 #健全的地方把套接字和共享内存文件 SocketPath / var / run / mod_fcgid SharememPath / var / run / mod_fcgid / fcgid_shm
您的configuration告诉Apache在FastCGI下提供所有CGI脚本,这是不可能的。 FastCGI不直接与CGI脚本兼容。
您应该将AddHandler指令移动到您的客户端的VirtualHost中,因此它不适用于整个configuration,例如
<VirtualHost *:80> ServerName clienthost.com ... AddHandler fcgid-script .fcgi .cgi </VirtualHost>
如果您的客户端脚本与其他cgi脚本位于同一VirtualHost上,则可以将FastCGI处理限制在特定的位置或目录中,例如
<Location /clientarea> AddHandler fcgid-script .fcgi .cgi </Location>