• ベストアンサー

CGIがソースで表示されてしまう。

プログラミング初心者です。 ホームページでCGIを使おうと思い、 『10日で覚えるperl/CGI』という本を購入しました。 付属のCDから ActivePerl5.8.7 とApache HTTP Server2.0.54 というものをダウンロードしました。 はじめは本の通りにセットし、ローカルPC内でうまく練習できていました。 しかし、PCを買換え、新しい方にインストールして、まったく同様の手順でセットしたところで問題が起きました。 どういうわけか、ローカルのPC上での練習であっても、CGIがソースのまま表示されてしまうのです。 俗にいう『さいころゲーム』のCGIも、さいころの目がランダムで表示されるわけではなく、そのソースが画面に出てしまいます。 似たようなことがないか丸1日インターネットで調べたのですが、みつからず、ご教授お願いいたします。 足りない情報など、あるかとおもいますが、よろしくお願いいたします。 PC:windows XP Professional Version 2002 Service Pack 3 Intel(R) Core(TM)2 Duo CPU E4400 @2.00Ghz 2.00 Ghz 1.99GB RAM

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

  • ベストアンサー
  • zxcv0000
  • ベストアンサー率56% (111/196)
回答No.2

新しいパソコンで、ディレクトリレイアウトを変更していませんか? 不具合が発生した CGI の絶対パスは、新旧パソコンで同じですか? ここで言う絶対パスは、ローカルファイルとしてのパスで、「c:\foo\bar」の格好です。 私はWindows版 Apache も『10日で覚えるperl/CGI』も全く知らないので的中しそうな例を出せないですが、鍵は「新旧のパソコンの違いは何か」だと思います。 ただ、OSの種類・バージョンとか他のインストールソフトを疑うのは最後でいいです。 自力でいろいろ調べる場合には、旧パソコンで CGI が正しく動いたのが 「ScriptAlias」 のおかげか「Options +ExecCGI」のおかげかが判っていると、調べ易いと思います。

参考URL:
http://httpd.apache.org/docs/2.0/howto/cgi.html
azure-kasa
質問者

お礼

大変わかりやすい回答ありがとうございます。 昼頃からご指摘いただいた内容をチェックしていたら、今、なんとか動かせるようになりました。 お世話になりました。

azure-kasa
質問者

補足

「新旧のパソコンの違い」など、理由は結局よくわかりませんでしたが、動かせるようになりました。ありがとうございます。 「ScriptAlias」についてネット検索したり、添付していただいた参考URLのおかげで、apacheのhttpdの記述通りの場所(cgi-bin)に、旧PCのときも、新PCのときもCGIを納めたディレクトリを置いてなかったようです。 (cgi-binというディレクトリ(フォルダ?)の中に入れるべきところが、htdocsというフォルダ内にCGIを納めてました。) 本にはhtdocsというフォルダ内につくるように書いてありました。 旧PCのほうでなぜ問題なく動いたのかはわかりませんが、教えていただいた内容から考えて、収納場所を変えてみたら動かせるようになりました。 ありがとうございます。^^

その他の回答 (1)

  • KDASH-XP
  • ベストアンサー率45% (62/135)
回答No.1

CGIスクリプトのファイル.plやら.cgiやらが ApacheのCGIハンドラに関連づいていないためだと思います。

参考URL:
http://httpd.apache.org/docs/2.0/ja/mod/mod_mime.html#addhandler
azure-kasa
質問者

お礼

さっそくのご回答ありがとうございます。 夜遅くに申し訳ありません><

azure-kasa
質問者

補足

# To use CGI scripts outside of ScriptAliased directories: # (You will also need to add "ExecCGI" to the "Options" directive.) # AddHandler cgi-script .cgi # # For files that include their own HTTP headers: apacheのcnfというところで、#AddHandlerから#を外す作業のほうはやってみました。 関連づけるとはどのようにすることなのでしょうか。よろしくお願いいたします。