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>