質問: fedora core3でcgiがソースコードで表示されてしまいます。 document root("var/www/html")でcgiを使うために、httpd.confの設定で#addhandler cgi-script →addhandler cgi-script , と書き直し、のoption項目にexeccgiと追加しました。 アクセスするときはlocalhost/***.cgiとしています。 cgi fileのperlのパスが#!/usr/bin/perlとなっているのでその場所にちゃんとperlがあるかも確認しました。 .cgiファイルはwindowsxpからasciiで転送したものです。.httpd.confの設定以外はデフォルトの状態です。 何日間か試行錯誤したのですが、うまくいきません。どうかご助言お願いします。
回答: test.cgiをいう簡単なcgiを用意して、ちょっと以下の4パターンについて検証してみました。 環境 server_software = apache/2.0.52 (freebsd) php/4.3.9 dav/2 test.cgi ↑のような変数server_softwareの設定内容を出力するようなもの。 パターン1: addhandler cgi-script .cgi 設定なし options execcgi 設定なし →test.cgiファイルのソースコードが表示 +test.cgi: 実行権なし →test.cgiファイルのソースコードが表示 パターン2: addhandler cgi-script .cgi 設定あり options execcgi 設定なし →403 forbidden エラーログ:options execcgi is off in this directory: /~/test.cgi +test.cgi: 実行権なし →403 forbidden エラーログ:options execcgi is off in this directory: /~/test.cgi パターン3: addhandler cgi-script .cgi 設定なし options execcgi 設定あり →test.cgiファイルのソースコードが表示 +test.cgi: 実行権なし →test.cgiファイルのソースコードが表示 パターン4: addhandler cgi-script .cgi 設定あり options execcgi 設定あり →test.cgiが実行され、実行結果を表示 test.cgi: 実行権なし →internal server error エラーログ:permission denied: exec of '/~/test.cgi' failed premature end of script headers: test.cgi 上記結果から、「addhandler cgi-script .cgi」の設定が有効になっていない、つまり拡張子cgiのファイルを実行可能なcgiファイルと思っていないとしか思えないです。 どこかで「addhandler cgi-script .cgi」の設定を打ち消すような設定(removehandlerとか)してないですよね? そういう設定をしていないなら、今のところ原因となりそうな事がちょっと思い浮かばないですね。