• ベストアンサー

初心者 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だけ表示されるはずだと思うのですが なぜ全てのタグが表示されてしまうのでしょうか? どこが間違っているのかご指摘よろしくお願いします。

  • 1hdthd
  • お礼率97% (239/244)
  • Perl
  • 回答数3
  • ありがとう数8

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

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

他にも間違いがあるのかもしれませんが、今パッと見てわかったことは MIMEヘッダが間違っていることです。 文字の出力でしたら text/plain または text/html を指定してください。 そのソースリストでは test/html になっています。 test/html というMIME型は存在しません。

1hdthd
質問者

お礼

ありがとうございます。 test/htmlは単純に入力ミスをしてしまいました! 早速 text/htmlかtext/plain にしてみましたが ダメでした。 まだどこか間違ってるのかも、、、

その他の回答 (2)

回答No.3

perlのパスが違うのでは? #!/Perl/bin/perl をActivePerlを標準で C:\Perl\ にインストールした場合は #!C:/Perl/bin/perl に変更してみてください

1hdthd
質問者

お礼

うーん でもhtmlはうまく表示されます。 確認してみます。ご回答ありがとうございます。

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

Apache で CGI を動かすには設定で必要です。 参考URLを参照して設定してください。 一般に、Perlソースがそのままブラウザに表示されるのは、大方この手の問題です。 あと、No.1 さんのおっしゃる様に content-type の誤りも直しましょう。

参考URL:
http://httpd.apache.org/docs/2.2/howto/cgi.html
1hdthd
質問者

お礼

設定してみます! ありがとうございます。

関連するQ&A

  • 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

    ディレクトリにindex.html等がないときに 中にあるファイルが一覧で出力される、apacheのような機能の付いた cgiを使っているのですが、 -------------- 始まり #!/usr/local/bin/perl opendir(DIR,"./"); @item = readdir(DIR); $out = ""; foreach $file (@item){ $out .= "<a href=$file>$file</a>\n"; } print <<EOF; Content-type: text/html <html> <head> <title>All Files</title> </head> <body> <pre> $out </pre></body></html> EOF -------------------終わり 特定の拡張子ファイルだけを出力しないようにするにはどうしたらいいでしょうか?(例えば、.cgiなど。上位ディレクトリに登る「.」「..」も出さない) ディレクトリやファイルを判別して表示を変えたり、ファイルサイズや ファイルが置かれた、更新された時間も表示するようにしたいです。 宜しくお願いします。

    • 締切済み
    • CGI
  • 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
  • ApacheでCGIが正常に動作しません。

    httpd.confの設定でPerl.exeの場所の指定は必要なのでしょうか? 以下の場所に設定を行うのかと思ったのですが、設定するとApache起動時にprogram filesがエラーになってしまいます。 ServerSignature On !g:/program files/apache group/apache/perl/bin/" 設定が必要であれば設定方法をお願いします。 httpd.confの設定に <Directory "G:/Program Files/Apache Group/Apache/cgi-bin"> AllowOverride None # Options None Options ExecCGI Order allow,deny Allow from all </Directory> は追加してあります。 現在、CGIの結果として #!/perl/bin/Perl.exe print "Content-type: text/html\n\n"; print "\n"; print " Hello! WORLD \n"; print "\n"; exit; のように表示されない命令も全て表示されます。 本当はHello!WORLDだけを表示したいのですが。

  • CGIについて…エラーで表示されません。

    CGIの勉強を始めたばかりの初心者です。 参考書を読んでいて、サーバーの時間を取得して表示する…っていうので、 本の通りに記述したのですが、表示されないんです。 (まだ途中段階で、とりあえずhtmlを記述した所です。) 最初、print"<html>\n";等、全部区切って書いてみた時は、 サーバーの時間は表示されましたが、ブラウザでソースを表示すると、htmlは、 </body> </html> しか表示されていませんでした。 (間違ってるのかな?と思って見直したり書き直したのですが…何度やっても同じでした。) なので、print <<EOF; ~ EOFの中に記述してみたところ、 サーバーエラーになってしまって、表示されないんです。 無料のサービスのサーバーで、自作CGIもOKです。 サーバーのヘルプに書いてあったのを読んで、 cgi-binというディレクトリに入れて、パーミッションも755に設定しました。 どこかおかしいのでしょうか?それともサーバーの問題でしょうか? #!/usr/local/bin/perl print"Content-type:text/html\n\n"; $now=localtime(time); print <<EOF; <html> <head> <title>SAMPLE</title> </head> <body> $now </body> </html> EOF

    • ベストアンサー
    • CGI
  • 1つのhtmlページにたくさんのCGIを表示したい

    1つのhtmlページにたくさんのCGIを表示したいのですができますか? "Content-type: text1/html\n\n" /* ** CGI版のhello.c(HTML仕様) */ #include <stdio.h> main(){ printf("Content-type:1/html\n\n"); /* ここから HTML でお馴染みのタグ */ <HTML> <HEAD> <TITLE></TITLE> </HEAD> <BODY> /* あいうえお */ "Hello C World!<BR>\n" "</BODY>" "</HTML>" } みたいなCGIを入れたいのですが。

    • 締切済み
    • 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
  • 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
  • CGIが動きません!!

    CGIが動きません。htmlを表示できる状態です。 エラーログには「 couldn't spawn child process: g:/program files/apache group/apache/cgi-bin/hello.cgi」と表示されています。 どうしたら良いのでしょうか? windouw NT 4.0 + Apache version 1.3.19 + Active Perl version 5.005_03 です。 perlの構文チェックは問題なしです。 httpd.confの設定は下記のようにしました。 1.AddHandler cgi-script .cgi を追加。 2.オプションの設定にExecCGIを追加。 <Directory "G:/Program Files/Apache Group/Apache/cgi-bin"> AllowOverride None # Options None Options ExecCGI Order allow,deny Allow from all </Directory>

専門家に質問してみよう