mod_fcgid, saída do script perl indo para o apache error_log

2

Estou tentando fazer com que um script Perl antigo seja executado novamente após a instalação do mod_fcgid. Eu tive que instalar o mod_fcgid para um novo cliente, mas parece ter quebrado alguns dos meus outros scripts cgi.

Ao ir para a página, agora é um erro 500. Eu verifiquei o log de erros, e a saída do script está no log de erros ... então o script está rodando, mas por algum motivo ainda entrega 500 Erros Internos do Servidor ao navegador ...

Cabeçalhos de HTML são a primeira coisa impressa ... por isso não sei ao certo por que esse erro está ocorrendo.

O registro de erros:

[omitted:html output]
[Wed Dec 08 08:59:18 2010] [warn] (104)Connection reset by peer: mod_fcgid: read data from fastcgi server error.
[Wed Dec 08 08:59:18 2010] [error] [client x.x.x.x] Premature end of script headers: 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(communication error), terminated by calling exit(), return code: 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


# Sane place to put sockets and shared memory file
SocketPath /var/run/mod_fcgid
SharememPath /var/run/mod_fcgid/fcgid_shm
    
por LinuxGnut 08.12.2010 / 15:07

1 resposta

1

Sua configuração está dizendo ao Apache para servir todos os scripts CGI sob o FastCGI, o que não é possível. O FastCGI não é diretamente compatível com scripts CGI.

Você deve mover a diretiva AddHandler para o VirtualHost do seu cliente, para que ela não se aplique a toda a configuração, por exemplo,

<VirtualHost *:80>
    ServerName clienthost.com
    ...
    AddHandler fcgid-script .fcgi .cgi
</VirtualHost>

Se os scripts do seu cliente estiverem no mesmo VirtualHost que seus outros scripts cgi, você poderá restringir o tratamento do FastCGI a um local ou diretório específico, por exemplo,

<Location /clientarea>
    AddHandler fcgid-script .fcgi .cgi
</Location>
    
por 11.12.2010 / 11:49