ErrorDocument CGI não executando, fonte exibida

0

No servidor HTTP Apache 2.2, o ErrorDocument tem um script PHP CGI no meu configuração que mostra uma boa mensagem e reage a vários erros códigos e mostra informações adicionais para cada um. Isso funciona bem.

Mas depois de atualizar para a versão 2.4, ele não é mais executado. Em vez disso, o código-fonte completo desse arquivo é exibido, incluindo a primeira linha, ver abaixo. O que há de errado aqui?

A configuração é bem simples:

ErrorDocument 401 /cgi-bin/error.cgi
ErrorDocument 403 /cgi-bin/error.cgi
ErrorDocument 404 /cgi-bin/error.cgi
ErrorDocument 500 /cgi-bin/error.cgi

O arquivo é de propriedade do usuário e grupo corretos e é executável. isto é assim:

#!/usr/bin/php-cgi
<?
$errorCode = $_SERVER['REDIRECT_STATUS'];
$reqUrl = $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
...

O log de acesso contém a entrada esperada com o código de erro, como 500 ou 403. O log de erro me diz que o cliente foi negado na minha diretório restrito, com também é esperado.

Mas por que o arquivo de documento de erro não é mais executado?

A versão do Apache é de 2.2.x para 2.4.7 no Ubuntu 14.04.

Atualização: conf-enabled / serve-cgi-bin.conf está ativado. Aqui está parte da minha configuração do VirtualHost:

<VirtualHost 1.2.3.4:80 [1:2:3::4]:80>
    ServerName example.de
    ServerAlias www.example.de
    DocumentRoot /var/www/web001
    ErrorDocument 401 /cgi-bin/error.cgi
    ErrorDocument 403 /cgi-bin/error.cgi
    ErrorDocument 404 /cgi-bin/error.cgi
    ErrorDocument 500 /cgi-bin/error.cgi
    AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xhtml+xml application/x-javascript text/
    SuexecUserGroup web001 webusers
    ScriptAlias /cgi-bin/ /var/www/web001/cgi-bin/
    AddHandler fcgid-script .php
    FCGIWrapper /var/www/web001/cgi-bin/php-fcgi .php
    <Directory "/var/www/web001">
        Options +Includes +ExecCGI
    </Directory>
</VirtualHost>
    
por ygoe 17.12.2014 / 19:30

1 resposta

1

Comparando as configurações padrão antigas e novas em detalhe, revelou que o módulo cgid não estava mais incluído. Depois de ativá-lo, as páginas CGI de erro funcionam como esperado novamente. Eu acho que qualquer outra página CGI não teria funcionado, mas eu não as uso regularmente, então eu não notei. Não tenho certeza se é uma alteração relacionada ao Ubuntu ou se todas as instalações do Apache não vêm com CGI ativado hoje.

Esta é a solução rápida:

a2enmod cgid

Em seguida, reinicie o apache.

    
por 18.12.2014 / 20:16