CGIでソースがそのまま表示されてしまうのはなぜ?

このQ&Aのポイント
  • CGIやPerlを学んでいる初心者が、作成したソースがそのまま表示される問題に困っています。どのように修正すれば良いのか教えてください。
  • 質問者は最近CGIやPerlを学び始めましたが、作成したソースがそのまま表示されてしまいます。どのようにすれば解決できるのかお教え願いたいです。
  • CGIやPerlの初心者が作成したソースがそのまま表示されてしまう問題に困っています。どの部分を修正すれば正しく表示されるのか教えてください。
回答を見る
  • ベストアンサー

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

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

  • CGI
  • 回答数5
  • ありがとう数1

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

  • ベストアンサー
回答No.5

CGIスクリプトのソースがそのまま出力されるのは、そのファイル/URIがCGIとして実行できていないためです。 httpd.confの<Directory>ディレクティブや<Location>ディレクティブなどの指定箇所が間違えているか、 ファイルの拡張子を間違えているか、 httpd.confを書き換えてからApacheをリスタートしていないか。。。 Forbiddenが出てきたら.cgiファイルに実行権限が無い。 Internal Server Errorが出てきたら、Perlがインストールされていないか.cgi拡張子とPerlが関連づけられていない。 ということが考えられます。

INAMATU
質問者

お礼

遅くなってしまいましたが、本当にありがとうございました。 わかりやすく教えていただいたので、とても助かりました。

INAMATU
質問者

補足

talooさん 出来ました!! apacheをリスタートさせたら出来ました。 何度も丁寧にアドバイスを下さいまして、ありがとうございました。 とても感謝しています。

その他の回答 (4)

回答No.4

 よくあるミスの一つなので、ネットに情報があります。 CGIのソースが表示される http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=9681&forum=10 CGIを有効にする http://www.be-webdesigner.com/technotes/server/httpd_conf/cgi.htm

参考URL:
http://www.be-webdesigner.com/technotes/server/httpd_conf/cgi.htm
INAMATU
質問者

補足

LEVELUP100さん ありがとうございます。 参考にさせていただきます。

回答No.3

>No.2お礼 >という具合に設定を変えました。 すると、どうなりましたか?

INAMATU
質問者

補足

そうすると、ソースがそのまま表示されてしまうんですよね。質問に書いたソースが、そのまま・・・。 これでもうわからなくなってしまったわけです。

回答No.2

そのファイルをCGIで実行するように、ウェブサーバーが設定されていますか?

INAMATU
質問者

補足

talooさん ウェブサーバーはapache2を設定しています。 そして、 Options Indexes FollowSymLinks Includes ExecCGI AllowOverride All AddHandler cgi-script .cgi AddType text/html .shtml AddOutputFilter INCLUDES .shtml という具合に設定を変えました。

  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.1

こんにちは。 まず、確認ですがperl自体のインストールはきちんと出来ていますか?

INAMATU
質問者

補足

LancerVIIさん こんにちは。 perlはインストールされています。

関連するQ&A

  • 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を試そうと思ったのですが、原因不明のInternal Server Errorが出ます。 cgi-binはいらないとのことですので、wwwにそのまま入れました。 index.htmlも同じ場所にありそれは出ますのでパス間違いではないです。 またパーミッションも777にしてみましたが駄目です。 #!/usr/local/bin/perl print "Content-Type: text/html\n"; print "\n"; print "<html>"; print "<body>"; print "abc"; print "</body>"; print "</html>"; こんな感じで、TELNETでログインして実行も出来ます。 bash-2.05b$ ./index.cgi Content-Type: text/html <html><body>abc</body></html>bash-2.05b$ いろいろ調べたのですが ◆パーミッション→OK ◆TELNETで実行してみる→OK ◆perlへのパスは?→/usr/local/bin と /usr/bin どちらでもいいそうです。験しに変えましたが状況変わらず。 何か気が付いたことがあれば教えてください

    • ベストアンサー
    • 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勉強中(初心者です)

    #!/usr/bin/perl print "content-type:text/html\n\n"; print "<HTML>\n"; print "<head><title>CGI</title></head>\n"; print "<BODY>\n"; print "<H1><FONT COLOR=\"#FF0000\">こんにちは</FONT></H1>\n"; print "</BODY>\n"; print "</HTML>\n"; というCGIつくりました。 プロバイダの説明には Perlの場所 /usr/bin/perl または /usr/local/bin/perl となっていますが、 どこにどう置いて(ホームディレクトリでしょうか?)、どうやって起動させてよいのかさっぱりわかりません。 ご教授ください。

    • ベストアンサー
    • 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
  • 外部コマンドで返された値をCGIで取り込むには?

    外部コマンドで返された値をCGIで取り込むには? 環境:Activeperl 5.8.9/IIS6/Windows2003Server [hello.cgi] ==================================== #! /Perl/bin/perl #HTMLヘッダーを出力します print "Content-type: text/html\n\n"; print "エコーのテスト<BR>"; my $msg=`echo hello`; print "エコーは".$msg."です"; exit; ==================================== 上記cgiを、Windowsのコマンドプロンプト上で「c:\perl>hello.cgi」とすると、ちゃんとDOS窓上で動きますが。同ファイルに 対して、http://www.test.com/scripts/hello.cgi とすると、ブラウザ上にて、 ============= エコーのテスト エコーはです ============= のような感じになって、$msgを出力してくれません、どうしてでしょうか?お知恵をおかしください。

    • ベストアンサー
    • Perl
  • cgiが動きません。。。

    つい最近、perlを勉強し始めた超初心者です。 ローカル(?)でcgiを作成したり、動かしたりしていたのですが、ホームページを開設してみようと思い立ちました。 早速、開設はしたものの、問題のcgiがまったく動いてくれません・・・ プロバイダはbiglobeです。まず、テスト用として「kantan.cgi」を用意しました。中身は #!/usr/local/bin/perl print "Content-type: text/html\n\n"; print "Hello world\n"; exit; です。ローカルではきちんと表示されます。 biglobeのwebFTPで「/public_html」に転送後、パーミッションを755に変更しました。 「http://www7a.biglobe.ne.jp/~*****/kantan.cgi」を開くと、「ページを表示できません」と表示されてしまいます。 「HTTP 500 - 内部サーバー エラー 」と書いてありますが、私には何のことだかサッパリわかりません。 アドバイスをいただけると助かります。よろしくお願いします。

    • ベストアンサー
    • 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へデータを引き継ぎ

    HTMLでメールフォームを作りCGI(Perl)で次のプログラムを作りました。 #!/usr/local/bin/perl print "Content-type: text/html\n\n"; print "$mail\n"; print "$namae\n"; print "$naiyou\n"; 動作確認のためプログラムは少しにしました。何も表示されません。

    • ベストアンサー
    • Perl