出産前後の痔にはご注意!

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の場所も正確です。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

 以下補足要求


1.エラーが出るのならステータスコードを教えてください
2. FTP転送時にasciiモード(FTPソフトによってはtextモードとも言う)で送りましたか?
3. パーミッションは取り合えず最も普遍的な 755にしてみてください
4.  2.3.を確認しても駄目なら スクリプトの末尾に
BEGIN{use CGI::Carp qw(fatalsToBrowser);}
と追加してみてください
表示されたメッセージがあれば 補足に貼り付けてください

##以下、上の説明
1. ステータスコードとは サーバーから返される 404、500などの数字ですが
http://www.studyinghttp.net/status_code <=ここが詳しい
ブラウザのタイトル欄に表示されなければ
 MSIEの場合なら ツール>インターネットオプション>詳細設定>
 「HTTPエラーメッセージを簡易表示する 」<=これのチェックを外してからMSIEを再起動し 問題のCGIにアクセスし直してください

2. windows、MAC、UNIXの改行コード(Content-type: text/html\n\n の\n がそれです)
 はそれぞれ違います。
 上の書き方ではwindowsは \r\n macは\rだけ unixは\nだけ
 asciiモードで転送しないと そのまま送られてしまいますので例えばwindowsからだと 正しいperlのパスであっても
#! /usr/bin/perl\r\n となり unixは/usr/bin/perlではなく /usr/bin/perl\r を探しに言ってしまい、当然見つかりませんのでエラーに成ります。

3. サーバーによっては .cgiのパーミッションが700でも動いたり
  777でも動いちゃったりします(<=これはすごく危険ですが)
  あるいはごく稀にグループ権限で動く場合もあるらしいです
 それらの場合でも最大公約数的に755なら動きます

4. これは perlのエラーメッセージを画面に表示するルーチンです
  デバッグが終了したら消去しても構いません。
http://perldoc.jp/docs/modules/CGI.pm-2.89/CGI/C …
    • good
    • 0

リスト見た限りでは何が悪いのか発見できなかったので、コピペして手元のテスト用サーバで実験してみましたが、やはり正常稼動しました。


・CGIは許可されているのか
・ファイル名は間違えていないのか
・パーミッションは正確に設定されているか
・確認時のURLは正確か
・動かないとはどういう症状か
状況を正確にお願いいたします。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング