ErrorDocument CGIが実行されていません。ソースコードを表示します。

ErrorDocument CGIが実行されていません。ソースコードを表示します。

Apache HTTP Server 2.2には、素晴らしいメッセージを表示し、複数のエラーコードに反応し、各エラーコードに関する追加情報を表示するErrorDocument PHP CGIスクリプトが構成されています。これは素晴らしい作品です。

ただし、バージョン2.4にアップグレードした後はもう実行されません。代わりに、最初の行を含むファイルの完全なソースコードが表示されます。下記をご覧ください。どうなりますか?

構成は非常に簡単です。

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

ファイルは正しいユーザーとグループによって所有され、実行可能です。次のようになります。

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

アクセスログには、500や403などのエラーコードを含む期待されるエントリが含まれています。エラーログには、制限されたディレクトリからクライアントが拒否されたことがわかります。これは予想される現象でもあります。

しかし、間違った文書ファイルがまったく実行されないのはなぜですか?

Ubuntu 14.04のApacheバージョンは2.2.x〜2.4.7です。

修正する:conf-enabled/serve-cgi-bin.conf が有効になっています。これは私の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>

ベストアンサー1

以前の基本構成と新しい基本構成を詳細に比較したところ、cgidモジュールは含まれなくなりました。有効にすると、エラーCGIページは期待どおりに動作します。他のCGIページもうまくいかないと思いますが、頻繁に使用していないので気付いていませんでした。これがUbuntu固有の変更であるかどうか、または現在のApacheインストールでCGIが有効になっていないかどうかはわかりません。

クイック修正は次のとおりです。

a2enmod cgid

その後、Apacheを再起動します。

おすすめ記事