• ベストアンサー

cgiコードが表示されてしまう

こんにちは。CGIを勉強し始めたばかりの素人で初歩的な質問で申し訳ありませんが、どうしても解決できなくて質問させて頂きました。宜しくお願いします。 win2000にてApache、active perlを使用しております。 今回初めて簡単なCGIを作ってローカルホストで確認しようとしたのですが、CGIがコードのまま表示されてしまいます。 perlインタプリタ→d:\Perl\bin\perl cgiはd:\Apache\htdocs\testフォルダに置き http://127.0.0.1/test/test1.cgiでアクセスしてみたのですが私の作ったtest1.cgiに限らずどのCGIでもコード表示されてしまいます。 何が悪いのか分からず困ってしまっています。(ここまでは入門書の指示通りに設定してきたのですが) 宜しくお願い致しますm(_ _)m

  • asat
  • お礼率66% (4/6)
  • CGI
  • 回答数3
  • ありがとう数3

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

  • ベストアンサー
  • ikspiari
  • ベストアンサー率48% (29/60)
回答No.3

CGIの設定(MIME TYPEの設定)がされていないと思われます。 AddType application/x-httpd-cgi .cgi httpd.confに上記行があると思いますが、 「#」でコメントアウトされていませんか? それを外してみてください。 それと、デフォルトのhttpd.confの設定では、 CGIはcgi-binディレクトリ内でしか動作しません。

asat
質問者

お礼

ご回答ありがとうございます! ご指摘頂いたコメントアウトを外し、CGIをhtdocsからcgi-binディレクトリへ移したところ、ちゃんと動きました。 私の購入した入門書で「Apacheではhttp://127.0.0.1/というURIはデフォルトではApache\htdocsディレクトリに対応しています。したがって、例えばhttp://127.0.0.1/index.htmlというURIはApache\htdocs\index.htmlに対応しています。 」 と書いており、htdocsディレクトリ内にCGIを置いて いたのですがこれは著者側のミスなのでしょうか。 (ちなみにhttpd.confの初期設定は書籍の指示通り、付属CDの設定済みファイルを上書き保存して使っています) なにはともあれ問題解決できました。ありがとうございましたm(_ _)m

その他の回答 (2)

noname#151446
noname#151446
回答No.2

私もApacheはあまりわかっていないのですが、、、^^; cgiが実行されないのはたぶんApacheの設定が上手くいっていないのだと思います。 参考URLの「CGI Tips」にWindowsにApacheを導入する方法が書いてあります。 こちらを参考にしていただければおそらく動くと思います。 それと >#!c:/Program Files/perl/perl >       ↓ >#!d:/Perl/bin これはhttpd.confの中にこの記述があったのでしょうか? httpd.confは#で始まる行はコメント扱いになるので ここを変更しても変化はないはずです。 また、CGIの冒頭にに記述するPerlのパスは #!d:/Perl/bin/perl.exe のようにPerl.exeへのパスを記述しないといけません。

参考URL:
http://www.din.or.jp/~bigstone/cgilab/index.html
asat
質問者

お礼

なるほどー勉強になります。ありがとうございます。 ご紹介頂いたサイトで勉強してきます!

  • chupark
  • ベストアンサー率41% (90/218)
回答No.1

 私はApacheではなくANHTTPDというフリーのWebサーバーを使っているのでApacheの細かい設定がわかりませんが、 おそらくApache上でPerlまでのパスがとおってないのではないかと思います。    ANHTTPDではPerlへのパスを設定する際に d:\perl\bin\perl.exe とPerl本体の実行ファイルへ設定をしていたと思います。    Apacheでperlインタプリタの設定を行う部分を見直されてはいかがでしょうか?  参考になればよいのですが。(^^;)

asat
質問者

お礼

なるほどーありがとうございます。 早速Apacheの設定ファイルであるhttpd.confファイルを 開き探してみたところ # # Apache parses all CGI scripts for the shebang line by default. # This comment line, the first line of the script, consists of the symbols # pound (#) and exclamation (!) followed by the path of the program that # can execute this specific script. For a perl script, with perl.exe in # the C:\Program Files\Perl directory, the shebang line should be: #!c:/Program Files/perl/perl となっている所があったので 英語は得意ではないのですがperl.exeのあるディレクトリ を指しているのではないかと解釈し、 #!c:/Program Files/perl/perl        ↓ #!d:/Perl/bin と変えてみたのですが変化はありませんでした(/_<。) 私の設定自体が間違っているのか他に設定個所があるのかそれとも違う原因なのか・・ でも勉強になります。ご回答ありがとうございます。

関連するQ&A

  • 初心者 CGIがうまく表示できない hello worldが表示されない

    よろしくお願いします。 アパッチとアクティブパールはインストール済みです。(vistaです) C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\index.html で「It works!」は問題なく表示されます。 中身: <html><body><h1>It works!</h1></body></html> です。 次にCGIを表示する練習をしようと C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\perlbook というフォルダに ********************************* ファイル名:hello.cgi 中身: #!/Perl/bin/perl print << "eof"; content-type: test/html <html> <head> <title>cgi</title> </head> <body> hello world </body> </html> eof ********************************* を作り、ダブルクリックで開きましたが ブラウザには 「#!/Perl/bin/perl print << "eof"; content-type: test/html hello world eof」 が表示されます。 hello worldだけ表示されるはずだと思うのですが なぜ全てのタグが表示されてしまうのでしょうか? どこが間違っているのかご指摘よろしくお願いします。

    • ベストアンサー
    • Perl
  • CGIを開けない。。。

    apacheとphpを設定して動作確認したあとに、cgiも操作したいので、Active Perlというものをインストールしてみました。 phpは、http://localhost/で「C:/Program Files/Apache Software Foundation/Apache2.2/htdocs」のフォルダーを参照できるのですが、cgiを開くときには、どこのフォルダーに格納し、URLをどうすれば宜しいのでしょうか?(因みにcgi-binとhtdocsに格納し、http://localhost/***.cgiで試したのですが駄目でした。) Active Perlインストール後に変更した場所 ScriptAlias /cgi-bin/ "C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin/" <Directory "C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin"> AddHandler cgi-script .cgi .pl なお、perlの設定には、こちらhttp://www.jisaba.net/xp/actpeal/04.htmのサイトを参考にしました。 環境はWindowsVistaです。 どなたか宜しくお願い致します。

    • ベストアンサー
    • Perl
  • htmlにCGIプログラムの埋め方。

    window2000+apache2+perl5の環境ですが。 ディレクトリの構成: c:\Program Files\Apache Group\apache2 apache2にcgi-bin とhtdocsの二つのディレクトリがあり、 cgi-binにwforum.cgiというCGIプログラムがあるとします。 \htdocs\index.htmlを次のように作りました: ------------------------------------ <html> <head> <title> test page </title> </head> <body> ここに”BBS 行き”というハイパーテキスト をクリックしたら、wforum.cgiを実行してくれる </body> </html> -------------------------------------- 上のようなプログラムをどう作れますか。できれば、相対 パスを使いたいです。

    • ベストアンサー
    • CGI
  • cgiでコードがそのまま表示されてしまいす。

    CGIを勉強中なのですがブラウザにコードがそのまま表示されてしまいます。 OSはビスタ、ソフトはActivePeal5.7.8.813とapache_2.0.54を使っております。 会社のパソコン(XP)だとスムーズに行くのですが、自宅のビスタだとそうはなりません。 他の方の質問を参考にいろいろ試したのですが、解決できません。 #! c:/perl/bin/perl # CGIヘッダーの出力 print "Content-type: text/html\n\n"; こんなかんじでブラウザに表示されます。 どの様な対処方法がありますでしょうか?

    • 締切済み
    • CGI
  • cgi(perl)でパラメータが渡せない

    以下のプログラムでnum=9が伝わらないので、ミスをご指摘ください。 グラフィカルなアクセスカウンタを表示させようとしていますが うまくいかないのでテキストモードでデバッグしています。 [ /usr/local/apache2/htdocs/gif-view.html ] <html> <head> <meta http-equiv="Content-type:" content="text/html; charset=UTF-8"> <title>gif-view</title> </head> <body> <iframe src="/cgi-bin/gif-test.cgi?num=9"></iframe> <!-- <img src="/cgi-bin/gif-test.cgi?0" width=50 height=50> --> </body> </html> [ /usr/local/apache2/cgi-bin/gif-view.cgi ] permission は 755 にしています。 #!/usr/bin/perl print "Content-Type: text/plain;\n\n"; print "gif-test.cgi\n"; $prm0 = @ARGV[0]; if($prm0 = "") { print "Param is exist\n"; } else { print "Param is empty\n"; 実行結果として gif-test.cgi Param is empty となります。 httpd.conf で Script Alias /cgi-bin/ "/usr/local/apache2/cgi-bin/" を有効にしています。

    • ベストアンサー
    • Perl
  • htmlで画像が表示されない

    CGIを勉強し始めた者です。 手始めにCGIを使わずに画像表示をさせたところ早速つまづきました。 アドバイスお願いします。 vine linux 6.3 に apache2.4をソースからインストールしました。 /usr/local/apache2/htdocs に以下の cgi-test.html を置きました。 <html> <head> <meta http-equiv="Content-Type:" content="text/html; charset=UTF-8"> <title>CGI TEST</title> </head> <body> <h3>CGI TEST</h3> <img src="../cgi-bin/a0.gif">&nbsp;<img src="./a1.gif"> </body> </html> パーミッションは 755 root root cgi-test.html /usr/local/apache2/cgi-bin のパーミッションも 755 root root です。 ここに 数字0~9のgif画像を置いています。パーミッションは 644 root root 表示されないので/usr/local/apache2/htdocsにa0.gif, a1.gif を置いてみました。 パーミッションは 同じく 644 root root です。 数字0は表示されませんが、1は表示されます。 なぜ0が表示されないのかお教えください。

    • 締切済み
    • CGI
  • CGIのパス(Apache winで)

    初歩的な質問ですみません。 環境 windows2000 サーバー Apache/1.3.20 ActivePerl-5.6.1.626 をインストールが完了して、CGIを動作させようとしています。 ApacheでのHTML動作はできています。 CGIプログラムの一行目に #!/usr/local/bin/perl と記載されています。 その文字列を #!c:/bin/perl.exe に変更して現在動作させています。 しかし、ISPのHPスペースのperlへのパスは #!/usr/local/bin/perl なので、転送前に一行目を変更しています。 変更しなくても良いように ApacheでのCGIのパスを #!/usr/local/bin/perl で動作する方法を どなたか教えていただけないでしょうか? ちなみに Perlは[c:\bin]にインストールしてあります。 Apacheは[g:\apache]にインストールしてあります。

  • 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
  • omniHTTPdでのCGIの利用

    windows用のHTTPdのomniHTTPdを使って、HTTPサーバーを立てようとしています。 htmlを表示することは出来ました。が、CGIがうまくいきません、というか設定でわからない箇所があります。 普通、ISPなどのHPサービスでは、CGIを設定する際に #!/user/local/bin/perl と設定しますよね。でもこれが自宅のマシンだとどう設定して良いのかわかりません。 perl.exeは d:\test\httpd\cgi-bin\perl\ の中に入ってます。 omniHTTPdは c:\HTTPD\ の中に入ってます。 HTTPdにアクセスした時のルートが d:\test\httpd\index.html になってます。 CGIはその下の d:\test\httpd\cgi-bin\ に入れようとしています。 ちょっと説明下手でわかりにくいかもしれませんが、よろしくアドバイスお願いします。

  • cgi-bin配下のファイルに読込許可を!

    最近、Apache2を使い始めたばかりで設定がよくわかりません。 Apacheの設定ファイルで、httpd.confというファイルがありますが、その中で、 ScriptAlias /cgi-bin/ "C:/Apache2/htdocs/cgi-bin/" <Directory "C:/Apache2/htdocs/cgi-bin"> AllowOverride None Options All Order allow,deny Allow from all </Directory> と記述して"C:/Apache2/htdocs/cgi-bin"配下にあるファイルに CGIが動作するように許可しました。 しかし、これだと逆に"C:/Apache2/htdocs/cgi-bin"配下にある HTMLファイル(.htm等)が読み込めなくなってしまいます。 cgi-bin配下にあるhtmlファイルも表示できるように許可を 出したいのですが、どのように設定すればよろしいのでしょうか?

専門家に質問してみよう