• ベストアンサー

CGIのファイルの種類について

初めてCGIを勉強しています。テキストを見ながら自分のPCにApacheをインストールし、Perlもインストールしました。 #!c:/perl/bin/perl print "Content-type: text/plain\n\n"; print "Good Morning !"; とメモ帳を起動して文字を入力し、保存の時に"test.cgi"とフォルダーに保存しました。 テキストには起動するとWebブラウザに文字が出ると出てますが、私の場合、ブラウザの他にメモ帳が開いてそっちに文字が出ます。よくわからないのにもかかわらず、CGI拡張子の変更のところで、ファイルの種類を削除したり、新規で作ったり何度もやってて、開かないのでメモ帳で開くように変えたりしていたのが原因ではないかと思っています。身近で詳しい人がいないので本当に困っています。 時間がなくてテキストで勉強を始めたのですが、ちゃんと学校に行って勉強すればよかったのでしょうか。後悔と行き詰まりで頭が痛くなりました…。 どなたか、もしお分かりでしたら、教えてください。

  • CGI
  • 回答数3
  • ありがとう数4

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

  • ベストアンサー
noname#30871
noname#30871
回答No.3

 Apacheの設定ファイル“httpd.conf”の中に #AddHandler cgi-script .cgi という行があると思います。この行の先頭の "#" を外してApacheを再起動してください。(行頭に "#" が付いているとコメントだと解釈されて、無視されます。)  これで「拡張子 .cgi は CGI スクリプトである」とApacheに伝わります。  また、Apache はどのディレクトリにインストールして test.cgi はどこに置いたのでしょうか。通常は CGI スクリプトは "cgi-bin" ディレクトリの中に置きます。このディレクトリは httpd.conf の中の "ScriptAlias" で決められます。  参考URLで詳しく解説されています。

参考URL:
http://www.futomi.com/lecture/apache/config.html
mikaah
質問者

お礼

アドバイス、どうもありがとうございます。ご指摘どおり、Apacheをインストールした際に、#AddHandler cgi-script.cgiの”#”をはずしてあるのです。ScriptAliasの意味がよくわからなかったので、指示が間違っているのかもしれないと思って確認したところ、NoneとなっていたのでAllに変更しました。すると、動きました!!!どうもありがとうございます。そして詳しい解説も教えていただきまことにありがとうございます。朝の6時からの悩んでいましたが、午後になりやっと”Good Morning!”です。どうも有難うございます。

その他の回答 (2)

  • so_blue
  • ベストアンサー率48% (50/104)
回答No.2

> テキストには起動するとWebブラウザに文字が出ると出てますが、私の場合、ブラウザの他にメモ帳が開 > いてそっちに文字が出ます。 恐らく、ヘッダが Content-type: text/plain になっていて、ブラウザの設定が、text/plain=メモ帳を開く、 となっているせいだと思います。 print "Content-type: text/html\n\n"; とすれば、ブラウザに表示されると思います。

mikaah
質問者

お礼

アドバイス、どうもありがとうございます。ご指摘どおりヘッダを書き換えてテストしなおしましたが、やはり、ブラウザには、表示されずメモ帳が開いていました。うーーん…???お手数をおかけしました。

  • nipotan
  • ベストアンサー率59% (134/227)
回答No.1

それって、ちゃんと Apache 経由でやってます? ファイルをダブルクリックしたりして表示させたりしてません? 多分、Apache をインストールした所に、conf や bin や htdocs 等のフォルダが出来たと思いますが、cgi-bin というフォルダの中に test.cgi を入れて、 http://localhost/cgi-bin/test.cgi という URL でアクセスしてみてください。 もし、Apache 経由でアクセスしてるのであれば、SetHander や AddHandler で適宜 cgi-script を設定してあげてください。

mikaah
質問者

お礼

アドバイス、どうもありがとうございます。ご指摘どおりに再確認してみましたが、やはりアドレスにはテスト画面の指示が出ているのにもかかわらず、別ウィンドウが開いてメモ帳にGood Morning!が表示されていました。まったくもってわからないことだらけです。お手数をおかけしました。

関連するQ&A

  • Apacheを入れたのにローカルでCGIが動かない

    こんにちは。今CGIの勉強をしています。perlを使っているのですが、サーバーにアップする前にローカルで動作チェックをしようと思い、ApacheとActivePerlをインストールしました。 その後、Apacheを起動して、ローカルのCGIファイルにアクセスしたのですが、ページを表示できませんと出てしまいます。 ping localhostはちゃんと通ります。 環境 OS:WindowsXP HomeEdition SP2 セキュリティーソフト:無し ファイヤーウォール:解除済み Apache設定 Network Domain 127.0.0.1 Server Name   127.0.0.1 Version2.0.58 ブラウザ:IE6.0 プログラム保存先:C:\Program Files\Apache Group\Apache2\htdocs ファイル名:hello.cgi(拡張子表示有にしている。.txtなどは無い) ActivePerl:Version5.6 保存先:C:\Perl\bin(C直下) コード #!C:/Perl/bin/perl print "Content-Type: text/html\n\n"; print "<html>\n"; print "<body>\n"; print "<h1>Hello World!</h1>\n"; print "</body>\n"; print "</html>\n"; exit; 参考にしたサイト http://perl.misty.ne.jp/01.html 以上よろしくお願いします。

    • ベストアンサー
    • CGI
  • CGIのパーミッションについて??

    「10日で覚えるPerlCGI」という本を購入して 「ActivePerl」とWindows用の「Apache」をインストールしました。 使用しているOSはVistaです。ブラウザーはIEの(多分8か9)と GoogleCromeを使用しています。 Apacheのインデックス画面と他のHTML画面は 表示されるのですが、CGIを使用した画面が表示されません。 CGIの画面を表示させようとすると下記のメッセージが表示されます。 You don't have permission to access /tendays/1-1.cgi on this server 権限が関係しているのかと思い、 ドキュメントルートとCGIの置いてあるフォルダと、 Perlの置いてある場所の権限を全てフルコンにしました。 しかしながら、このメッセージは変化ありません。 下記がCGIの中身です。 -------------------------------- #! a:/perl/bin/perl print "Content-type: text/plain\n\n"; print "Hello Perl !"; -------------------------------- どのようにしたら、このCGIファイルをブラウザで表示できるようになるでしょうか。 どうぞ、よろしくお願いしいます。

  • CGIでソースがそのままでてしまうのですが・・・。

    CGIでソースがそのまま表示されてしまうのですが、どうしてなのでしょうか? 先週からCGIやPerlを学び始めました。そこで簡単なものを試しに作ってみたのですが、入力したソースがそのまま表記されてしまいます。 ちなみに、こんなものです。 #! c:/perl64/bin/perl print "Content-type: text/plain\n\n"; print "Hello Perl !"; どこをどう変えればいいのか、わからないので、質問してみました。 わかる方がいましたら、教えてください。 初心者なので、お手柔らかにお願いします。 . この質問に補足する.

    • ベストアンサー
    • CGI
  • CGIでファイルが読み込めない

    CGI初心者です。 (osはlinuxです。) #!/usr/local/bin/perl use strict; use CGI; my $file=new CGI; open(DATA,"/home/data.txt"); $file=<DATA>; close=(DATA); print "Content-type: text/html\n\n"; print "data=$file"; このスクリプトで、/home/data.txt(フルパスです)に書かれているデータを1行だけをブラウザで表示させたいのですが、表示できません。 どこがおかしいのか教えてください。 ちなみにdata.txtには実際に「abc」という文字1行しか入れていません。

    • 締切済み
    • CGI
  • Apache初心者です

    本日一度質問しました。 10日で覚えるPerl/CGI入門教室という参考書を買って ApacheとActivePerlをインストールしました。 Apacheはバージョン5.1.2600.0になっています。 これで、インストールは完了し、本書の通りに インストール先も完璧に出来ているはずです。 第一日目のお勉強が  #! c:/perl/bin/perl print "Content-type: text/plain\n\n"; print "Hello Perl !"; これでブラウザには Hello Perl ! と表示されるはずなのですが #! c:/perl/bin/perl print "Content-type: text/plain\n\n"; print "Hello Perl !"; ↑このまんまが表示されます。 一日目でつまずいてしまって途方にくれてます。 WindowsXP ウイルスバスター2006が入っていて 3台のPCをルーターで繋げています。 どこに間違えがあるのでしょうか? 初歩的なことですみません。

    • ベストアンサー
    • CGI
  • CGIファイルの送り方教えて下さい

    はじめまして!超初心者です。 最近CGIを本を見ながら勉強しているんですが ファイルの送信の仕方が分かりません。やはり HTMLファイルとは送信の仕方が違うのでしょ うね?誰か教えて下さい。 (FTPソフトはFetchです。) ちなみに送りたいファイルは --------------------------------- #!/usr/local/bin/perl print "Content-type: text/html\n"; print "\n"; print "<HTML>\n"; print "<H1>Hello!</H1>\n"; print "</HTML>\n"; --------------------------------- です。

    • ベストアンサー
    • CGI
  • CGIのテストに失敗

    ただ今ホームページを作成中で、CGIに興味を持つようになりました。 簡単なところから実際にやってみようと思い、Active PerlとAN HTTPDをダウンロードしてインストールまで完了。 ネットのCGI講座や入門といったサイトを参考にしながら、AN HTTPDの設定はできたのですが、簡単なはず?のCGIのテストに失敗してしまいました。 以下のような記述でファイル名をtest.cgiにして、httpd.exeと同じフォルダのcgi-binというフォルダに保存、http://localhost/cgi-bin/test.cgiでブラウザから開こうとしたのですが、ダメでした。 #!C:\Perl\bin print "Content-type: text/html\n\n" ; print "Hello, World!" ; 何がまずかったのかわかりません。Active Perlはデフォルトでどこもいじっていません。環境変数のPathもC:\Perl\bin\になっているのですが…。いろいろと見てまわったのですが間違いがわかりません。 どなたか教えていただけると幸いです。

    • ベストアンサー
    • CGI
  • レンタルサーバーでperlのcgiファイルを実行する手順を教えて下さい

    レンタルサーバーでperlのcgiファイルを実行する手順を教えて下さい。 レンタルサーバー会社からは、「cgi-bin」フォルダにcgiファイルを配置(アップロード)すれば ブラウザで見れると説明を受けました。 用意したcgiファイルは以下の内容です。 _____________________________ #! c:/perl64/bin/perl # CGIヘッダーの出力 print "Content-type: text/html\n\n"; #さいころを振る。 $n = int(rand 6) + 1; #HTMLの出力 print "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0.1//EN\">\n"; print "<html>\n"; print "<head><title>Perlでさいころ</title></html>\n"; print "<body>"; print "<p>さいころの目は<big>$n</big>です。</p>\n"; #御言葉を出力 if($n == 4){ print "<p>ふ、不吉な・・・。4が出ました。</p>\n"; } print "<body></html>"; __________________________________________ 一行目が原因でしょうか。ローカルで作成した、cgiファイルをレンタルサーバーに配置(アップロード)し ブラウザから見たいと考えております。 ご存知の方、教えて頂けないでしょうか。 宜しくお願いします。

  • XサーバーでCGIを使うには??

    質問なのですが、CGIを使いたいなと思い、幾つかのサイトを 見て勉強していたのですが、どうにも上手くいきません。 私はXサーバーを使用しています。XサーバーでCGIちゃんと 使えるよっていう方がいらっしゃれば一層助かります!! サーバーに置いてある自分のCGIのファイルをクリックして 開くと背景が青緑?になってソースがそのまま表示されてしまいます。 ちなみに、CGIファイルは以下です。public_htmlの下のcgiというフォルダの下にtest1.cgiというファイル名で保存しています。 =======-===ここから================= #!/usr/local/bin/perl print "Content-type: text/html\n"; print "\n"; print "<html>\n"; print "<head>\n"; print "<title>テスト</title>\n"; print "</head>\n"; print "<body bgcolor=\"#ffcccc\">\n"; print "これはCGIのテストです。\n"; print "</body>\n"; print "</html>\n"; (文字コードはShift_JISです。) ===========ここまで=============== .htaccessのファイルも、CGIのファイルと同じ階層に入れて います。以下がそのファイルです。public_htmlの下のcgiというフォルダの下に.htaccessというファイル名で保存しています。 ==========ここから================ AddType application/x-httpd-cgi .cgi<CR><LF> (最後の行は改行しています) (文字コードはShift_JISです。) ==========ここまで================ どうすれば良いのでしょうか??ご教授お待ちしております。

    • 締切済み
    • CGI
  • ActivePerlとApacheを自分のPCにインストールしたのですが・・・。

    お願いします。 ActivePerlとApacheを自分のPCにインストールし、 CGIのテストを試みました。 Apacheのインストールは上手くいったのですが、ActivePerl がどうもうまく動きません。 Perlのインストール後、環境変数を Path→「C:\Perl\bin\;C:\Perl\bin;C:\Perl\bin\」に変更、 htdocsフォルダ内にメモ帳で記述したhello.cgiを保存後、 ブラウザにh t tp://localhost/hello.cgiと入力しても ファイルが見つかりませんと返されます。 ちなみにhello.cgiの中身は #!C:/Perl/bin/perl print "Content-Type: text/html\n\n"; print "<html>\n"; print "<body>\n"; print "<h1>Hello World!</h1>\n"; print "</body>\n"; print "</html>\n"; exit; です。使用マシンはWIN XPで ActivePerlのバージョンは5.8.8,Apacheは2.2.4です。 何か助言がございましたらよろしくお願いします。

    • ベストアンサー
    • Perl