アプリ版:「スタンプのみでお礼する」機能のリリースについて

プログラミング初心者です。

ホームページで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

A 回答 (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

この回答への補足

「新旧のパソコンの違い」など、理由は結局よくわかりませんでしたが、動かせるようになりました。ありがとうございます。

「ScriptAlias」についてネット検索したり、添付していただいた参考URLのおかげで、apacheのhttpdの記述通りの場所(cgi-bin)に、旧PCのときも、新PCのときもCGIを納めたディレクトリを置いてなかったようです。
(cgi-binというディレクトリ(フォルダ?)の中に入れるべきところが、htdocsというフォルダ内にCGIを納めてました。)
本にはhtdocsというフォルダ内につくるように書いてありました。

旧PCのほうでなぜ問題なく動いたのかはわかりませんが、教えていただいた内容から考えて、収納場所を変えてみたら動かせるようになりました。
ありがとうございます。^^

補足日時:2009/04/12 18:39
    • good
    • 0
この回答へのお礼

大変わかりやすい回答ありがとうございます。

昼頃からご指摘いただいた内容をチェックしていたら、今、なんとか動かせるようになりました。

お世話になりました。

お礼日時:2009/04/12 18:39

CGIスクリプトのファイル.plやら.cgiやらが


ApacheのCGIハンドラに関連づいていないためだと思います。

参考URL:http://httpd.apache.org/docs/2.0/ja/mod/mod_mime …

この回答への補足

# 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から#を外す作業のほうはやってみました。

関連づけるとはどのようにすることなのでしょうか。よろしくお願いいたします。

補足日時:2009/04/12 01:07
    • good
    • 0
この回答へのお礼

さっそくのご回答ありがとうございます。

夜遅くに申し訳ありません><

お礼日時:2009/04/12 01:12

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