• ベストアンサー

 文書を作成してもサーバーはエラー (CGI超超初心者)

 よろしくお願い致します。  現在の状況を説明しますと  ●アパッチという仮サーバーをインストールして        ↓  ●10日で憶えるCGIという本のソースをそのまま   入力してネットにアドレスを入力して        ↓  ●きちんと動作するか確認する。  という作業をしていますが、何故かアドレスを入力して「さ~動くかな?  」と確認してもエラー表示がされるのです。今まではなんとか進んできて  たんですが。。。  自分の入力ミスかな、とくさる程確認をして、入力しなおしてもエラーが  表示されてしまいます。  どういうミスがあるのか、それ自体が分からない状況です。    ●拡張子はきちんとCGI●保存場所も本の通り、  申し訳ございません、助けて頂けると嬉しいです。ちなみに他の方の書き込  みが全く理解できません、宜しくお願いします。  ソースです。 #! c:/perl/bin/perl # ファイルの読み込み open(FILE, "./diary.txt"); @data = <FILE>; close(FILE); # サーバー出力 print <<END; Content-type: text/html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html> <head><title>ファイルの読み込み</title></head> <body> <p>$data[0]</p> <p>$data[1]</p> <p>$data[2]</p> </body> </html> END

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

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

  • ベストアンサー
  • Kirishima
  • ベストアンサー率32% (155/480)
回答No.2

# ファイルの読み込み ↑ ここの#のあとの文字、全角のスペースじゃありませんか? ここを半角スペースにしてみて下さい。 (そこを直したら動作しました) あと、参考サイトに私がActivePerlとApacheを導入するときに参考にしたサイトを上げておきます。

参考URL:
http://www2j.biglobe.ne.jp/~apollo/server/server.html
goodsavage
質問者

お礼

 初歩的ミスでした、ご迷惑かけてどうもすみませんでした。  今まで半角とか全角とかあまり気にせずに打ち込みをしていた  かもしれません。  ただ自分にとって今回指摘していただいた部分は自分の今後に  とって非常に大切な部分でした。  参考サイトまで提示していただき大変嬉しいです。  有難うございました。  今後とも宜しくお願い致します。  

その他の回答 (2)

  • Nutrocker
  • ベストアンサー率19% (9/47)
回答No.3

いきなりurlで呼び出さずに、 1) まずDOS窓で perl -cw xxx.cgi で構文チェックをして下さい。 構文エラーがなければ xxx.cgi syntax OK と表示されます。 2) 次に、ローカルで実行してみます。 perl xxx.cgi で結果のhtml文が表示されます。 表示量が多い時は perl xxx.cgi>a.txt などとして、a.txtをメモ帳などで確認します。 3) html文に問題がなければ、いよいよurlとして呼び出してみます。 ここでエラーが表示されるようでしたら環境に問題があります。

goodsavage
質問者

お礼

 どうも有難うございました。  下記の指摘のように半角スペースのところを全角で入力してしまったよう  でした。Nutrockerさんの頂いたアドバイス、ながめてみましたがちょっ  と今自分には理解できませんでした。  コピペしてちょっと色々しつこく勉強して解読してみます。  アドバイス有難うございました。

noname#26283
noname#26283
回答No.1

 基本的なことですが、念のため確認です。  「perl」の実行環境はインストールされましたか?  まだでしたら、参考URLからダウンロードするか、買った本にCD-ROMが付属していたら、その中に無いか探してみてください。  「アパッチ」はwebサーバの機能だけなので、それだけではperlのスクリプトは実行できません。  『質問には書いてないけど、perlもインストールしてるよ!』とうことであればすみません。

参考URL:
http://www.activestate.com/Products/Download/Get.plex?id=ActivePerl&_x=1
goodsavage
質問者

補足

説明不足ですみませんでした。  ソフトにactive perl set upがありそれはきちんと  インストールしてあるんですが。。。。

関連するQ&A

  • PerlでFILEを埋め込もうとするとエラー

    Perlでアクセスカウンターを作ろうと思っています。 そこでファイルオープンを勉強し、 CGIプログラムを実行しようとしたところ、 エラーが起こりました。↓ Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request. Please contact the server administrator, ********@*********(伏せてあります) and inform them of the time the error occurred, and anything you might have done that may have caused the error. More information about this error may be available in the server error log. ------------------------------------------ Apache/2.0.55 (Win32) Server at 127.0.0.1 Port 80 ソースを見てもおかしい所は見当たりません…↓ #! c:/perl/bin/perl open(FILE, "./sample.txt"); @data = <FILE>; close (FILE); print <<END; Content-type: text/html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html> <head> <title>sample</title> </head> <body> <p>$data[0]</p> <p>$data[1]</p> <p>$data[2]</p> </body> </html> END サーバーはApacheを使っています。 原因がわかったら教えてください。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • ファイルの読み込み操作のコーディングについて

    perlのファイル読み込み操作についての質問です #!/usr/local/bin/perl #ファイルの読み込み open(FILE,"<diary.txt"); $data = <FILE>; close(FILE); #サーバー出力 print <<END; Content-type: text/html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html> <head> <title>ファイルの読み込み</title> </head> <body> <h5> <p>$data</p> </h5> </body> </html> END 次のように、perlのコードを書いて無料の CGIの使えるレンタルサーバーに 設置したところ、エラーが出てしまいます dairy.txtはこのファイルと同じディレクトリで パスも間違えてないです、いろいろ自分で調べてみたんですが どこが間違えているかわかりません よろしかったらどなたかperlに詳しい方がいらっしゃったら 間違えている箇所を教えていただけないでしょうか?

  • レンタルサーバーで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ファイルをレンタルサーバーに配置(アップロード)し ブラウザから見たいと考えております。 ご存知の方、教えて頂けないでしょうか。 宜しくお願いします。

  • CGIでhtmlを作成するもブラウザに表示されない(ソース表示あり)

    PerlでHTMLを表示するCGIを作成しました。 ローカルPCで試しているのですが、ブラウザは真っ白な表示で、ステイタスバーには「ページが表示されました」のメッセージがでます。 ソースを表示するとちゃんと指定したHTMLタグがあります。 何が正常な表示の妨げになっているのでしょう。 ちなみにPerlのコードはそんなに難しいものではなく #!/usr/local/bin/perl require "./lib/cgi-lib.pl"; &ReadParse(); print <<END; content-type: text/html <html> <head> <TITLE>送信処理</TITLE> </head> <body bgcolor="#cccccc"> <center> $in{'data'}<BR> </center> </body> </html> END 程度のものです。 ・マシンは富士通FMVでOSはWinXP ・WebサーバーソフトはAN HTTPD Daemon Version 1.41g ・CGIはCygwinのPerl5.8.0です。 ・ブラウザはIE6-SP2です。 この様にブラウザで真っ白な表示になるのは1つのCGIファイルだけで、他のCGIファイルは正常にブラウザ表示されます。

    • ベストアンサー
    • Perl
  • CGI/perlのエラー

    CGIのテストをしています。 サーバーはUbuntu14.04 htmlで <html> <head><title>HTMLサンプル</title></head> <body> ボタンサンプル<br> <form action="cgi-bin/test.cgi" method="post"> <button type="button">ボタン</button><br> <input type="submit" value="送信"> </form> </body> </html> test.cgi #!/usr/bin/perl system = ("date >> webwrite""); 実行すると End of script output befor heads: test.cgi のエラーで止まってしまいます。 ファイル webwriteは作成されています。 何か、終了処理が必要なもでしょうか?

  • CGIが動かない

    /var/www/html/hoge.cgiを作りました。 ----- #!/usr/bin/perl print <<'END'; Content-type: text/html; charset=utf-8 <html> <body> <p>hoge</p> </body> </html> END ----- ターミナル上でperl hoge.cgiとやった場合も、実行権を与えて./hoge.cgiとやった場合も、出力はちゃんとなされました。 httpd.confにはExecCGIとAddTypeにより、ソーステキストがそのまま表示されていたのを、Internal Server Errorまでこぎつけたのですが、なんでエラーなのかわかりません。 CGIってもしかしたら所有者がrootだと動きませんか? あとはぜんぜん思い当たることがなくて・・・。 Redhat7.3 Apache1.3.23

  • C言語で作成したCGIにて「Internal Server Error」

    こんばんは。CGIについて質問させて下さい。 現象: C言語でCGIを作成し、ローカルで動作しているApacheで 動作確認をしようとしたところ、 「Internal Server Error」が出てしまいました。 質問: 上記の現象が起こったのですが、C言語でCGIを実行するには なにが足りないでしょうか? 環境: OS:WindowsXP Webサーバ:Apache 2.0.61 Cコンパイラ:gcc 3.4.4(cygwin) 状態: ○「http://localhost:8080/」にアクセスすると「あなたの予想に反して・・・」画面は見れます。 ○「http://localhost:8080/cgi-bin/test.cgi」にアクセスすると、「Internal Server Error」が表示されます。 ○httpd.confの設定値(デフォルトから修正した部分) ・ServerName 127.0.0.1:8080 ・<Directory "C:/Program Files/Apache Group/Apache2/cgi-bin">内 Options none → Options ExecCGI ・#AddHandler cgi-script .cgi → AddHandler cgi-script .cgi ○Apacheのerror.log ~[error] [client 127.0.0.1] Premature end of script headers: test.cgi ○test.cgiのコンパイル前ソース ---ここから #include <stdio.h> int main(void){  printf("Content-Type: text/html\n\n");  printf("<html><body>Hello, World!</body></html>");  return 0; } ---ここまで ○test.cgiはcygwinにて標準出力を確認済み。 ・・・ちなみにperlでCGIを作成すると表示されます。 (ActivePerlインストール済み) perl側のソース ---ここから #! c:/perl/bin/perl print "Content-Type: text/html\n\n"; print "<html><body>"; print "Hello, CGI!"; print "</body></html>" ---ここまで なにかおかしな点がございましたらご指摘をお願い致します。

    • ベストアンサー
    • CGI
  • さくらのサーバーでwww配下のcgiを使用し、サーバールートのファイル

    さくらのサーバーでwww配下のcgiを使用し、サーバールートのファイルを表示 ルートディレクトリ(wwwフォルダと同じ階層)にテキストファイルを設置し、 www配下に設置したcgiをブラウジングした際に、テキストファイルの内容を表示する仕組みを作ろうとしています。 別のサーバーでは動いているようですが、 なぜかさくらでは変数の値が表示されません。(<hr>は表示されています) ちなみにcgiのファイルとフォルダのパーミッションは755に設定しています。 わかる方いらっしゃいますでしょうか? よろしくお願いします。 cgiのソースは下記になります。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー #! /usr/bin/perl open (FILE, "</home/txt1.txt"); $lst = <FILE>; close(FILE); open (FILE, "</home/txt2.csv"); $dat = <FILE>; close(FILE); print <<END; Content-Type: text/html; charset=Shift_JIS <html> <head> <title>testcgi</title> </head> <body> $lst <hr> $dat </body> </html> END ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

    • ベストアンサー
    • CGI
  • 「 <!--#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
  • cgiについて教えて下さい。

    cgiについて教えて下さい。 ■cgiが実行できません。 ・os:windows7(64bit) ・apache2.2.16(windows32bit)※ローカル ・ActivePerl(インストール済み) ※httpd.confファイル(現状) ・Options Index FollowSymLinks Includes ExceCGI ・AllowOverride All ・AddHandler cgi-script.cgi ・AddType text/html.shtml ・AddOutputFilter INCLUDES .shtml ■http://localhost/abc/test.cgi を実行すると表示できず。 ・http://localhost/ にはアクセスできます。 ※windowsネットワーク診断/トラブルシューティングの結果 →リモートデバイスまたはリソースが接続を受け付けません。 ■上記、test.cgiのソース #! c:/perl/bin/perl # CGIヘッダーの出力 print "Content-type: text/html\n\n"; # HTMLの出力 print "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\">\n"; print "<html>\n"; print "<head><title>Hello HTML</title></head>\n"; print "<body><p>こんにちは。これはHTML文書の例です。</p></body>\n"; print "</html>"; 以上、宜しくお願い致します。

    • 締切済み
    • CGI