プロが教える店舗&オフィスのセキュリティ対策術

 LinuxでCGIを使っているのですが、出力されるページがちゃんとしたhtmlページではなく、むき出しのソースコードのままで出てきてしまいます。
 Apacheのhttpd.confも「AddHandler cgi-script .cgi」と設定もきちんとしてあって、
 ヘッダーなども小文字と大文字の違いには気を付けたり、GoogleやWikipediaなどの有名サイトのものを借用したりしているのですが、ソース剥き出しの状況は変わらないです。
 また、このcgiをPerlのコマンドラインから一時的に仮ファイルを作り、そこから直接リンクをクリックすると何も問題なくそのhtmlが表示されます。

 実は最近、WindowsからLinuxに転向したのですが、Windows時代には使えていたものが使えなくなっているという状態です。
 どなたか解決策を御存じの方は教えてください。

 ちなみに環境を申し上げておきます。
 WindowsXP Pro
 Internet Explorer 7.0
 FireFox 2.0
 Apache 2.0

 Linux Ubuntu 6.06 LTS - Dapper Drake
 FireFox 2.0
 Apache 2.0

A 回答 (2件)

Apacheのhttpd.confでCGIファイルを置いてあるディレクトリがCGI実行のオプションが付いていないのでは?



Ubuntuを使った事が無いので解りませんが、/home/httpd/htmlにCGIファイルがあるとだめで、/home/httpd/cgi-binになら大丈夫とかなら、設定の問題ではないかと思います。

/home/httpd/htmlにCGIを許可するなら、
<Directory /home/httpd/html>
Options Indexes Includes FollowSymLinks
</Directory>

などとある、OptionsにExecCGIを追加してみて下さい。

<Directory /home/httpd/html>
Options Indexes Includes FollowSymLinks ExecCGI
</Directory>

とこんな感じです。

ユーザーディレクトリなら
<Directory /home/*/public_html>
とかだと思います。

私の環境で試したら、CGIのソースが表示されました。
ただ、私の環境はApacheが1.3系なので、他の問題かもしれませんが...。

頑張ってください。
    • good
    • 0
この回答へのお礼

お騒がせしました。
皆さんのご意見、本当にありがとうございます。
今日も仕事帰りにいろいろと試してみたのですが、皆さんのご意見とはまったく別の方法で解決に至ることができました。
なぜかヘッダーを少し変えただけできちんと出力されるようになりました。


<Content-Type: text/html; charset=UTF-8;>

 ↓

Content-Type: text/html; charset=UTF-8;

これだけで、きちんと表示されるようになりました。

ただし、今後はLinuxに慣れてきたらDebianかFedoraに移りたいと思っているので、その時にまた同じような問題が発生するかもしれないので、皆さんのご意見を思い出してみることにします。
ありがとうございました。

お礼日時:2007/04/13 01:31

ソース剥き出しが どういうソースなのか



A.呼ばれたCGIのソース
B.CGIが返したHTML(がtext/plainで出ちゃう)


http://www.google.co.jp/search?hl=ja&lr=lang_ja& …
検索はイマイチだった・・・
    • good
    • 0
この回答へのお礼

わざわざ検索までしていただいてありがとうございます。
いろいろとためになるサイトがありました。
わたしはずっと「CGI」「コード」「むきだし」のような検索だったので、こうした検索結果は出ませんでした。

わたしはhtml自体はそこまでは詳しくなく、ただのプログラムの出力のためにだけにCGIを使っているだけなので、有名サイトのヘッダーを借りて表示されればよい、というレベルの使い方しかしていません。

今までの結果はずっと「B」だったのですが、それは「text/plain」と関係があるのですね。
これからも勉強を続けたいと思います。

ありがとうございます。

お礼日時:2007/04/13 01:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!