■エラー404で、ログに「File does not exist」と残っている。

[原 因]

ApacheでCGIがうまく動作しない原因としては、以下が考えられる。

  1. ドキュメントでのCGIのコールの仕方が誤っている。

  2. CGI名或いはCGIへのパスが誤っている。

[対 策]

  1. ドキュメントでのCGIのコールの仕方が誤っている。

    この場合、CGIのドキュメントをよく見直すしかない。access_logのエラーコードは、ミスの仕方にもよるので不定であるが、「404」になるケースが多い。

  2. CGI名或いはCGIへのパスが誤っている。

    この場合、access_logのエラーコードは、ターゲットが見つからないので「404」になる。
    CGI名が誤っている場合は、修正するしかない。CGIへのパスが誤っているケースでは、httpd.confの設定とドキュメントの構造とブラウザでのアクセス方法の関連があっていないケースが多い。アクセス方法とhttpd.confの設定の関係を以下に示す。

    ディレクトリ構造とhttpd.confの設定例を以下に示す。

    [ディレクトリ構造]

      home [ ルートディレクトリ ]
        |
        ├ oyaji [ おやじのユーザディレクトリ ]
        | |
        | └ public_html [ ドキュメントルート ]
        |    |
        |    └ count [ CGI設置 ]
        |
        └ akirin [ あっこのユーザディレクトリ ]
           |
           └ public_html [ ドキュメントルート ]
              |
              └ bbs   [ CGI設置 ]

    [関連の設定]

    DocumentRoot "/home"
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory "/home">
        Options FollowSymLinks SymLinksifOwnerMatch ExecCGI
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>
    UserDir /home/*/public_html
    <Directory /home/*/public_html>
        AllowOverride FileInfo AuthConfig Limit
        Options SymLinksIfOwnerMatch ExecCGI IncludesNoExec
        <Limit GET POST OPTIONS PROPFIND>
            Order allow,deny
            Allow from all
        </Limit>
        <LimitExcept GET POST OPTIONS PROPFIND>
            Order deny,allow
            Deny from all
        </LimitExcept>
    </Directory>

    DirectoryIndex index.html index.htm index.html.var
    ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/"



Top Pageへ     戻る