• 締切済み

Perlで書いたページが表示されない

以下の内容の「index.cgi」「test.cgi」という名前は異なるが 内容は同じファイルをIISを用いて表示させようとしています。 -------------------------------------------------------------- #!/usr/local/bin/perl print "Content-type: text/html\n\n"; print <<"htmss"; <HTML> <HEAD> <TITLE>CGI</TITLE> </HEAD> <BODY>今日からCGIを頑張って習得してきましょう。</BODY> </HTML> htmss -------------------------------------------------------------- この場合に、index.cgiは表示されるのですが、 test.cgiは表示されません。(サーバーが見つかりません、の表示) また、他の内容のcgiファイルも表示することができません。  ※最初は表示されていたが急に表示されなくなったり表示されたりを繰り返した結果、   見えない状態が続いています index.cgiもたまに表示することができない場合もあります。 これはIISのせいなのか、環境が不安定なせいなのか、困っています。 どなたか回答していただけると幸いです。

  • Perl
  • 回答数2
  • ありがとう数1

みんなの回答

  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.2

Windows環境のローカルテストですからEUCにする必要はないでしょう。Windows付属のメモ帳などを用いてシフトJISで保存したのなら,スクリプトの2行目を次のようにした方が良いです。 print "Content-Type: text/html; charset=Shift_JIS\n\n"; 同じファイルとは書いてあるものの,そのディレクトリについては一言も述べられていないのが気になります。 http://localhost/index.cgi http://localhost/test.cgi のように,両ファイルとも同じディレクトリにあるわけではないのですか?

  • vaio09
  • ベストアンサー率37% (756/2018)
回答No.1

「内容は同じ」と言いますが、ひょっとして、「ちゃんと動くindex.cgiを、サーバ上のviなどにコピー&ペーストしてtest.cgiを作成した」んですかね。文字コードまで一緒ですか? 1)ソースファイルの文字コードはEUCで書いていますか? 2)FTPソフトを使ってサーバに転送しているのなら、コードが変化しないように気をつけましたか? 3)たまに表示できる、については、閲覧側PCで、完全に更新(Ctrl+F5)で、表示されませんか?

Muulina
質問者

補足

vaio09さん、回答有難うございます。 test.cgiはメモ帳で新規作成し、 データをコピー&ペーストして作りました。 >1)ソースファイルの文字コードはEUCで書いていますか?  index.cgiを作成したとき、既定のままのコードにしてあり、  test.cgi作成時も既定のまま作っています。  vaio09さんが仰ってくださったように  EUCで読み直しもしてみましたが駄目でした・・・。 >2)FTPソフトを使ってサーバに転送しているのなら、コードが変化しないように気をつけましたか?  ローカルで自分のPC内のフォルダをActivePerlとIISを使い、  CGIを実行しているので変化したりはないと思います。  >3)たまに表示できる、については、閲覧側PCで、完全に更新(Ctrl+F5)で、表示されませんか?  F5もCtrl+F5も試しましたが駄目でした。  PCが不安定なのでしょうか。 

関連するQ&A

  • エラー表示の意味を解説してください

    CGI初心者です。自分の端末でサーバ設定し、テスト中の段階です。htmlファイルはブラウザからきちんと表示されました。が、CGIファイルを表示させようとすると、 CGI エラー - Content-Type ヘッダが正しくありません。 CGI 出力メッセージ: Can't open perl script "C:\www\hiro\ISO": No such file or directory とエラーがでます。ちなみに、スクリプトには #!/usr/bin/perl print"Content-type: text/html\n\n"; print"<HTML>\n"; print"<HEAD>\n"; print"<TITLE>CGI No1</TITLE>\n"; print"</HEAD>"; print"<BODY>\n"; print"CGIプログラム No.1,テスト成功!\n"; print"</BODY>\n"; print"</HEAD>\n"; と記述しました。なにがいけないのか教えてください。

    • ベストアンサー
    • CGI
  • CGIが文字化けしてしまう。(Perl)

    環境 WinXP    Apache ActivePerl 開くソフトは「Tera pad」      でやっています。ソースは #!/usr/local/bin/perl print "Content-type: text/html\n\n"; print "<HTML>\n"; print "<HEAD><TITLE>CGI TEST</TITLE></HEAD>\n"; print "<BODY>ああああ。</BODY>\n"; print "</HTML>\n"; __END__ です。「ああああ」部分が「‚ ‚ ‚ ‚ B」 と表示されます。 どなたか解決方法ご存知の方いらっしゃいましたら ご回答お願いします。

    • ベストアンサー
    • CGI
  • HTML上でcgiをイメージタグで呼び出すと×が出ます

    お世話になっております。 お分かりになる方いらっしゃいましたら、お手数ですがご教授願えますでしょうか? cgiを勉強しているのですが、以下のような感じで テストページを作ってみたところうまくcgiが呼び出せなくて困っています。 test.htmにてcgiをimgタグで呼び出そうとしています。 しかし、ブラウザで表示すると「×」が表示されてしまいます。 【test.htm】 --------------------------------------------------------------- <html> <head> <title>テスト</title> </head> <body> <IMG src="http://www.xxxxx.xx.xx/test.cgi" width="401" height="31" border="0"> </body> </html> --------------------------------------------------------------- ※「xxxxx.xx.xx」はドメイン名が入ります。 【test.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"; --------------------------------------------------------------- となっています。 ちなみに設置の仕方は以下の通りになります。  html/(レンタルサーバのメインディレクトリ)  │  ├ test.htm ……………………… (755) テストcgi呼出しHTML  │  └ test.cgi …………………… (755) テストcgiファイル 直接test.cgiを指定すると問題なく表示されます。 何か原因が他にあるのでしょうか? お手数ですが宜しくお願いいたします。

    • ベストアンサー
    • HTML
  • CGIの中で出力するテキスト内容をhtml側で表示する方法。

    htmlからCGIファイルを呼び出すと、そのCGIは動作はしているようですが、 print等でhtml形式で文字出力させている部分は、ブラウザ内に表示されません。 今やって失敗している方法です。どのようにするのが良いか教えて頂ければ幸いです。 1.CGIスクリプト(Perlで記述)を用意... test.cgi ----------------------------------------------------- #!/usr/bin/perl print "Content-type:text/html; charset=shift_jis\n\n"; print <<__EOD; <html lang="ja"> <head> <title>TITLE</title> </head> <div align=center> <a>テスト1</a><br> <a>テスト2</a><br> </div><br> </body></html> __EOD open(OUT,">a.tmp") || die "$!"; print OUT "aaaaa\n"; close(OUT); ----------------------------------------------------- 2.htmlを用意 ... test.html ----------------------------------------------------- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html> <head> <title>HTML TEST</title> </head> <body> <script src="http://xxx/CGI/test.cgi"></script> </body> </html> ----------------------------------------------------- 上記のとき、動作として、 ◆ブラウザからCGIのパス(http://svr1/CGI/test.cgi)に直接アクセスした場合、 「テスト1」「テスト2」の文字が表示され、a.tmpファイルも作成されている。 ◆ブラウザからhtml(http://svr1/test.html)にアクセスした場合、ブラウザ画面は何も表示されない (真っ白となる)が、a.tmpファイルは作成されている。 のようになってしまいます。 後者のようにして、htmlからCGIファイルを呼び出すと、そのCGIは動作はしているようですが、 print等でhtml形式で文字出力させている部分は、ブラウザ内に表示されません。 以上、よろしくお願い致します。

    • ベストアンサー
    • CGI
  • iis+cgiでmultipart/form-data送信がうまくいかない

    これまでLinux+Perl/CGIで構築していたWEBサーバをIIS+Perl/CGIに移す必要が生じ、新規にIISによるWEBサーバを構築しました。 一気にコンテンツを移動してもハマるだけだと考え、まずは簡単なコードを記述しCGIが動作するかどうかテストしています。 POSTによるinput type=textのデータ表示まではうまく行きましたが、ファイルアップロードのところで詰まりました。 IIS(Windows)によるWEBサーバの構築は初めてで、何が問題なのかサッパリわかりません。 どなたか問題点あるいはどこをチェックすれば良いかご指摘いただけませんでしょうか。 ●やった事 PerlにてPOSTを利用しmultipart/form-dataにてファイルをアップロードするシンプルなコードを書き、第一段階としてMIMEエンコードされたものをブラウザ上に表示するしようとしてみた。 コードは最下方の通り。 ●症状 送信を実行してもアップロード中のまま(ウィンドウマークが動き続けている)で、IISに設定してある10分程のタイムアウト時間を過ぎて終了してしまう。 TXT、XLS、DOCなどファイル種を変えて試しても全く同じ症状。 ●環境:Windows2000ServerSP4 IIS5.0 Perl5.8.8 *******アップロード画面****** <HTML> <HEAD> <TITILE>ファイルのアップロード</TITLE> </HEAD> <BODY> <FORM ACTION="/cgi-bin/upload.cgi" ENCTYPE="multipart/form-data" METHOD="POST"> ファイル: <INPUT TYPE="file" NAME="File" SIZE="32"><BR> <INPUT TYPE="submit" VALUE="送信"> </FORM> </BODY> </HTML> **********ここまで*********** *******CGI******************* #!/perl/bin/perl read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); print "Content-type: text/html\n"; print "\n"; print "<HTML>\n"; print "<HEAD>\n"; print "<TITLE>test</TITLE>\n"; print "</HEAD>\n"; print "<BODY BGCOLOR=\"#ffffff\">\n"; print "$buffer"; print "</BODY>\n"; print "</HTML>\n"; exit; ********ここまで***********************

    • ベストアンサー
    • CGI
  • テキストエリアのインプットをPerlプログラムへ

    基本事項だと思うのですが質問させてください。 まず、HTMLファイル上に <form method= "post" action ="http://localhost/test.cgi> <textarea name ="story" cols="60" rows="10"> This is a test. </textarea> ... <input type="submit" name="submit_story" value="submit"> とプログラムを組みます。 その後、perlプログラムにテキストエリアの内容を送りユーザがsubmitボタンを押したときに HTMLファイルとして出力します。 そのPerlは以下のように組みました。 print "Content-type: text/html\n"; print "\n"; print "<html>\n"; print "<head>\n"; print "<title>The test of CGI</title>\n"; print "</head>\n"; print "<body>\n"; $story = $_POST["story"]; print "<p><h3>Textarea says $story </h3></p>\n"; print "</body>\n"; print "</html>\n";  しかし、$storyは表示されませんでした。 どこがおかしいのでしょうか? もしよければアドバイスをお願いします。

    • ベストアンサー
    • CGI
  • perlがうごきません

    htmlファイルには <html> <form action="form2.cgi" method="get"> 食品名1<input type="text"name="form1"> <br> 食品名2<input type="text"name="form2"> <input type="submit"value="送信"> </form> </html> cgiファイルには #! /usr/bin/perl require "cgi-lib.pl"; &ReadParse(); print "Content-type:text/html\n"; print "\n"; print "<html>\n"; print "<head>\n"; print "<title>フォーム</title>\n"; print "</head>\n"; print "<body>\n"; print "おいしい$in{'form1'}\n"; print "まずい$in{'form2'}\n"; print "</body>\n"; print "</html>\n"; exit; cgi-lib.plはサーバーにいれております。 どうしてうごかないのでしょうか。 perlの場所も正確です。

    • ベストアンサー
    • 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
  • 「 <!--#exec cgi="***.cgi" --> 」が表示されません

    「main.cgi」というファイルを作り、単純にHTMLを表示するだけのCGIファイルを作成しました。 こんな感じ ------------main.cgi------------ #!/usr/local/bin/perl print "Content-type:text/html\n\n"; print <<EOM; <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis"> <title></title> </head> <body> <略> </body> </html> EOM __END__ -------------------------------- それで、ほかのHTMLファイルに <!--#exec cgi="main.cgi" --> と入力してそのページを見てみると、 [an error occurred while processing this directive] 上の文章が表示されていました。 どうすれば「main.cgi」の内容を表示することができるのでしょうか? よろしくお願いします。

    • ベストアンサー
    • Perl
  • 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

専門家に質問してみよう