• ベストアンサー

fedora core3でCGIがソースコードで表示されてしまいます。

document root("var/www/html")でCGIを使うために、httpd.confの設定で#Addhandler cgi-script →Addhandler cgi-script , と書き直し、<Directory"var/www/html">のoption項目にExecCGIと追加しました。 アクセスするときはlocalhost/***.cgiとしています。 cgi fileのperlのパスが#!/usr/bin/perlとなっているのでその場所にちゃんとperlがあるかも確認しました。 .cgiファイルはWindowsXPからASCIIで転送したものです。.httpd.confの設定以外はデフォルトの状態です。 何日間か試行錯誤したのですが、うまくいきません。どうかご助言お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Lean
  • ベストアンサー率72% (435/603)
回答No.3

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とか)してないですよね? そういう設定をしていないなら、今のところ原因となりそうな事がちょっと思い浮かばないですね。

yukiz
質問者

お礼

大変な手間をかけていただき有難うございます!! 現在サーバーにアクセスできない状況なので、後ほどアドバイスいただいたことを確認でき次第ご報告いたします。

yukiz
質問者

補足

報告遅くなって申し訳ありません。 アドバイスいただいたこと確かめてみたのですが、 どうやら問題ないようでした。 もうお手上げ状態です。 とりあえず、この質問は閉じて自分でもう少し調べてから、また質問しようと思うので、その時またアドバイスのほういただければ助かります。 アドバイスありがとうございました。

その他の回答 (2)

  • Lean
  • ベストアンサー率72% (435/603)
回答No.2

httpd.confを修正したあとhttpdの再起動はしてますか? 症状的には、「AddHandler cgi-script .cgi」の設定が有効になっていないように見えます。 もし「AddHandler cgi-script .cgi」の設定が有効で、Optionで「ExecCGI」が指定さえていないディレクトリ配下(ScriptAliasで指定されたディレクトリ除く)にある.cgiファイルを実行した場合は「403 Forbidden」になるはずなので。

yukiz
質問者

お礼

回答ありがとうございます。はい、再起動はしています。ExecCGIが指定されてないディレクトリ配下にあるというのは私は該当しているのでしょうか?あと、付け加えますが#ScriptAiliasとコメントアウトされていましたので#をはずしました、しかし、いまだうまくいきません。

  • mappy1983
  • ベストアンサー率70% (7/10)
回答No.1

CGIに実行権限を与えましたか? また書いてないだけかもしれませんが,AddHandelerには拡張子も必要です. AddHandler cgi-script .cgi # ← 拡張子

参考URL:
http://httpd.apache.org/docs-2.0/ja/
yukiz
質問者

お礼

説明不足ですみません。 AddHandlerのところは拡張子も書いています。 また、実行権限も755に設定しています。 また、これも説明し忘れていたのですが、 httpd.confがデフォルトの状態でcgi-binにCGIを入れたときでさえ、CGIはうまく動作しませんでした。 いろいろと説明が足りなくてすみません。

関連するQ&A