mod_fcgid,perl脚本输出到apache error_log

我试图让安装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>