• ベストアンサー

Perlがサーバー上でうごきません

PrintScreeの回答

  • PrintScree
  • ベストアンサー率25% (538/2091)
回答No.1

使用しているHTTPDのエラーログにはなんと出ていますか? CGIの1行目を見る限り、UNIX/Linuxのようですが、OSを含めて実行環境(各ソフトのバージョン)を補足してください。

abesouri
質問者

お礼

サーバの内部エラー サーバの内部でエラーまたは設定上の問題が発生したため、リクエストを処理できませんでした。このディレクトリへの CGI アクセスが有効にされているかどうか、サーバの管理者にご確認ください。 とでてきます。どこが問題でしょうか。

関連するQ&A

  • 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
  • (Perl)ReadParseによるハッシュへの格納について

    PerlのReadPerseについて質問させてください。 以下少々長いですが、過程を書きます。 <form>タグにより、入力フォームのページをHTMLで作成したとします(form.html)。 その際、<form method="post" action="form.cgi"> と入力しておいて、別途form.cgiを作成するとします。 form.htmlには、<form>タグ内のname属性で、それぞれ'weight' 'height' 'age'という三種類のデータを入力してもらって、取得するようにしています。 そして<input type="submit" value="登録">による、 登録ボタンを押すことで、 form.cgiに処理をさせるようにしています。 form.cgiの中身ですが、まず、最初の三行を書きます。 #!/usr/local/bin/perl require 'cgi-lib.pl'; &ReadParse(*form); となるのですが、わからないのが、 三行目の &ReadParse(*form); です。 サブルーチンReadParseを引数*formで、 cgi-lib.plから呼び出しているということはわかるのですが、いきなり*formという形で、ハッシュを登場させているあたりがわかりません。(この際、ハッシュ名の前の%を*に変えなければならないことは、一応知っております。理由はわかりませんが。) そこで質問なのですが、 いきなり、ハッシュであるformを登場させていいものなのでしょうか?? 以下、form.cgiの内容です。 #!/usr/local/bin/perl require 'cgi-lib.pl'; &ReadParse(*form); $name=$form{'weight'}; $sex=$form{'height'}; $megane=$form{'age'}; print "Content-type: text/html\n\n"; print "<html>\n"; print "<body>\n"; print "体重:${weight}<br>\n"; print "身長:${height}<br>\n"; print "年齢:${age}<br>\n"; print "</body>"; print "</html>"; _END_

    • ベストアンサー
    • CGI
  • Perlをcshスクリプトに書きなおしたい

    以下のPerlで書かれたCGIをcshスクリプトに書き直したく思っています。 #!/usr/local/bin/perl # load libraries require ("/usr/local/bin/cgi-lib.pl"); # cancel stdout buffering $| = 1; # header response print "Content-type: text/html\n\n"; print STDOUT "<HTML><HEAD></HEAD><BODY>\n"; &ReadParse; open(COMM, "|./message > ./message.out") || die; $in_text = $in{"Name"}; print COMM "Name: $in_text\n"; ... "Name"という変数名で受け取った文字列を$in_textに代入している ようですが、この辺りの処理、cshではどう書けばよいのでしょうか。

    • ベストアンサー
    • CGI
  • CGIでフォームからの入力内容を表示されない。

    初歩的な質問ですみません。 自宅サーバを使っています。 ■ActivePerl 5.8.8 Build 822 ■httpd142p ------------------------------ ■httpd142p ┗■cgi-bin  ┣■cgi-lib.pl  ┣■test.cgi  ┗■test.html ------------------------------- CGIは動作します。 一行目のパスもあっています。 --------------------------- 【test.cgi】 #!C:/perl/bin/perl #require './cgi-lib.pl'; #&ReadParse(*MYDATA) print "Content-type: text/html\n\n"; print "<HTML>\n"; print "<TITLE>RESULT</TITLE>\n"; print "<BODY>\n"; print "氏名 = $MYDATA{'simei'}\n\n"; print "住所 = $MYDATA{'jyusyo'}\n"; print "</BODY>\n"; print "</HTML>\n"; exit; -------------------------------- 【test.html】 <HTML> <HEAD> <TITLE>TEST</TITLE> </HEAD> <BODY> <P> <FORM ACTION="test.cgi" METHOD="POST"> 氏名:<INPUT TYPE="text" NAME="simei"> 住所:<INPUT TYPE="text" NAME="jyusyo"> <INPUT TYPE="submit" VALUE="送信"> <INPUT TYPE="reset" VALUE="リセット"> </P> </FORM> </BODY> </HTML> ---------------------------------- ■実行結果 氏名 = 住所 = ---------------------------------- どなたかご教授ください。

    • ベストアンサー
    • CGI
  • html →perlへフォームを渡そうとしてますが

    独学でmacでパールを勉強しています。 始めてからまだ1週間すこしくらい。 教科書読みながら、 CGIへフォームを渡す所の段階まで進んできました。 現段階で、htmlからperlへフォームを渡そうとしているのですが、 上手く行きません。 状況としては、htmlのフォームを入力して、登録を押す。 成功であれば→実行結果が表示されるはずなのですが、 現段階ではFinderがその実行htmlの場所を開くだけという形になっています。 下記は実験用に使っているソースです。 ーーーーーーーーーーー htmlは <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <title>test</title> <style type="text/css"> </style> </head> <body> <h1>メンバーズリスト</h1> <form method="post" action="form.cgi"> <p> 名前:<br/> <input type="text" name="name"/> </p> <p> 性別: <input type="radio" name="sex" value="male" checked>男 <input type="radio" name="sex" value="female">女 </p> <input type="checkbox" name="megane">メガネを付けてる </p> <p> <select name="kankei"> <option value="yuujin">友人 <option value="kaisya">会社関係 <option value="sonota">その他 </select> </p> <p> 住所: <textarea name="jyusyo" rows="5" cols="40" ></textarea> </p> <p> <input type="submit" value="登録"/><input type="reset" value="クリア"/> </p> </form> </body> </html> ーーーーーーーーーーーーーーーーー perlは #!/usr/bin/perl require 'cgi-lib.pl'; &ReadParse(*form); $name = $form{'name'}; $sex = $form{'sex'}; $megane = $form{'megane'}; $kankei= $form{'kankei'}; $jyusyo = $form{'jyusyo'}; print "Content-type: text/html\n\n"; print "<HTML>\n"; print "<HEAD><TITLE>情報受け取り</TITLE></HEAD>\n"; print " <BODY>\n"; print "<H1>情報受け取り</H1><HR>\n"; print "名前:${name}<BR>\n"; print "性別:${sex}<BR>\n"; print "めがね:${megane}<BR>\n"; print "関係:${kankei}<BR>\n"; print "住所${jyusyo}<BR>\n"; print "</BODY>\n"; print "</HTML>\n"; __END__ です。 ちなみに localhost上で同一ファイルに入れて、 動かしてます。 ご確認の上、ご助言ください、 perlの教科書に書いてあった構文は、 htmlの学習をするために使ってきたものと全く違ったため、 要点だけ残す形で、再度書いたものです。 htmlの文章がおかしいのか、perlがおかしいのか、 頭が変になりそうです。お助けください。

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

    <html> <head> <title>form3</title> </head> <body> <form action="form3.cgi" method="post" name="form3"> <input type="text"name="form3"> <input type="submit"value="送信"> </form> </body> </html> ::::::::::::::::::::::::::::::: #! /usr/bin/perl if($ENV{"REQUEST_METHOD"} eq "GET"){ $str=$ENV{QUERY_STRING"}; }else{ read(STDIN, $str, $ENV{"CONTENT_LENGTH"}); } $str=~ tr/+/ /; $str=~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack("c", hex($1))/eg; foreach(split(/&/, $str)){ my ($key, $value)=split(/=/, $_); $data{$key}=$value; } print "Content-type:text/html\n"; print "\n"; print "<html>\n"; print "<head><title>form3</title></head>\n"; print "<body>$data{'form3'}</body>\n"; print "</html>\n"; exit; :::::::::::::::::::::::::::::::: どうしてもうごきません。 どこかスクリプトがまちがっているのでしょうか。 パールのパスはあっています。

    • ベストアンサー
    • Perl
  • CGI初心者です

    sub html でフォームに入力してもらい、 sub kekka で入力情報を確認し、 sub shori でテキストファイルに登録。 というプログラムを考えているのですが、 フォームから入力されたデータが入った変数$in{'name'} が、sub shori に移ると消えてしまいます。 いろいろ試行錯誤したのですが分かりませんでしたので 教えていただけたらと思います。 以下がサンプルのソースです。 #!/perl/bin/perl require './jcode.pl'; require './cgi-lib.pl'; &ReadParse; if($in{'action'} eq "set"){&kekka;} elsif($in{'action'} eq "sss"){&shori;} else{&html;} sub html{ print "Content-Type: text/html\n\n"; print <<EOM <html>\n <body>\n <h1>CGIテスト1</h1>\n <form ACTION="./sample.cgi" METHOD="POST">\n <INPUT type=hidden name=action value="set">\n 名前<br><input type=text name="name" size="30" MAXLENGTH="30"><br>\n <input TYPE="submit" value="確認"><INPUT type="reset" value="リセット">\n </form>\n </body>\n </html>\n EOM } sub kekka{ print "Content-Type: text/html\n\n"; print <<EOM <html>\n <body>\n <h1>CGIテスト2</h1>\n <form ACTION="./sample.cgi" METHOD="POST">\n <INPUT type=hidden name=action value="sss">\n name = $in{'name'} <input TYPE="submit" value="登録">\n </form>\n </body>\n </html>\n EOM } sub shori{ print "Content-Type: text/html\n\n"; print <<EOM <html>\n <body>\n <h1>CGIテスト3</h1>\n <form ACTION="./sample.cgi" METHOD="POST">\n name = $in{'name'} </form>\n </body>\n </html>\n EOM }

    • ベストアンサー
    • Perl
  • 超初心者 ローカルでOKだったからUPしたら動かない

    超初心者です。 Perlの超入門本で勉強中。 OSはWin98、PerlはCygwinPerl、WebサーバーはANHTTPDです。 ローカルではうまく動作したので、実際にアップロードして動かしてみたのですがうまく動きません。 単に文字を入れて実行ボタンをクリックすると、その文字が表示されるだけという簡単なものなのですが、CGIのソースそのものが表示されてしまうのです。 ソースはこんな感じです。 ==文字を入れるWebページ== <html> <head> <title>実験</title> </head> <body> <form action=http://CGIサーバーのpathとファイル名(a1.pl) method="get" > <p><input type="text" name="data"></p> <p><input type="submit" value="実行"></p> </form> </body> </html> ====== ==Perlのソース(ファイル名はa1.pl)== #!/usr/local/bin/perl require "cgi-lib.pl"; &ReadParse(); print "Content-type: text/html\n\n"; print "<html>\n"; print "<head>\n"; print "<title></title>\n"; print "</head>\n"; print "<body>\n"; print $in{'data'}; print "</body></html>"; ===== perlのPathはプロバイダーの指定通り パーミッションも指定された番号に(なにやら755という事なので)しました。 プロバイダーの環境は、 OSはx86 Solaris2.6、Webサーバーはapache/1.3.12、言語はperlVer.5.005_003です。 誰か助けてください。

    • ベストアンサー
    • CGI
  • Perl使用のアップローダーで、jpgだけアップロードできない。

    ●フォームのcgiは ---------- print "Content-type:text/html\n\n"; print "<FORM method='POST' action='2.cgi' enctype='multipart/form-data'>\n"; print "<INPUT size='40' type='file' name='upfile'> \n"; print "<INPUT type='submit' value='送信する'>\n"; print "</FORM>\n"; ---------- ●実際のcgiは ---------- require './cgi-lib.pl'; print "Content-type:text/html\n\n"; #フォームからのデータを受け取る &ReadParse; #ファイル名を指定する $fnme = 'sample'; ################## # 拡張子を求める # ################## $substrings1 = "\\"; $ichi = rindex $in[1], $substrings1; $search_moji = substr($in[1], $ichi); $substrings2 = "."; $substrings3 = "\""; $start_position = index $search_moji, $substrings2; $start_position = $start_position; $finish_position = index $search_moji, $substrings3; $moji_count = $finish_position - $start_position; $file_type = substr($search_moji,$start_position,$moji_count); $fnme = $fnme . $file_type; # 受信データを書き込む open OUT,">$fnme"; binmode OUT; print OUT $in{'upfile'}; close OUT; $mes = '書き込みが完了しました。'; #完了メッセージ print <<"HTML"; Content-type: text/html <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> </HEAD> <BODY> $mes </BODY> </HTML> HTML exit; ---------- です。 txt、bmp、gif、xlsはテストしたところちゃんとアップロードされましたが、jpgだけができません。 特に制限はかけたつもりはないのですが、どこが原因でjpgのみダメなのでしょうか?

    • ベストアンサー
    • Perl
  • フォームメールへ引き継ぐ値が表示されないことがある。

    Perl 5.6.1、cgi-lib.pl 2.17、jcode.pl 2.11です。 以下のソースで、htmlファイルより引き継いだ値(theme,number,day)をたまに取り込めていないというか、これらの値だけ表示されていないことがあるようです。 私の環境では再現できておりません。 ユーザーの環境に依存するようなソースコードなのでしたら変更したいと思っております。 どなたかご教授よろしくお願いいたします。 #!/usr/local/bin/perl require "./cgi-lib.pl"; require "./jcode.pl"; &ReadParse; $text = $in{'theme'}; &jcode'convert(*text, 'sjis'); $in{'theme'} = $text; $text = $in{'number'}; &jcode'convert(*text, 'sjis'); $in{'number'} = $text; $text = $in{'day'}; &jcode'convert(*text, 'sjis'); $in{'day'} = $text; print<<'end_mark'; Content-type: text/html <html> <title>XXX</title> </head> <form action="/cgi-bin/XXX.cgi" method="post"> <table> <tr> <td>テーマ/</td> <td> end_mark print "<input type=\"hidden\" name=\テーマ\" value=\"$in{'theme'}\">$in{'theme'}</td></tr>\n"; print<<'end_mark'; <tr><td>番号/</td><td> end_mark print "<input type=\"hidden\" name=\"番号\" value=\"$in{'number'}\">$in{'number'}</td></tr>\n"; print<<'end_mark'; <tr><td>日時/</td><td> end_mark print "<input type=\"hidden\" name=\"日時\" value=\"$in{'day'}\">$in{'day'}</td></tr>\n"; print<<'end_mark'; <tr> <td>会社名(正式名)</td><td> <input type="text" name="_会社名"></td></tr> <tr> <td> <input type="submit" value="申込み" name="submit"> <input type="reset" value="リセット" name="reset"> </td> </tr> </table> </form> </body> </html> end_mark

    • 締切済み
    • CGI