解決済みの質問
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の場所も正確です。
投稿日時 - 2006-10-26 17:22:33
以下補足要求
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/Carp.pod
投稿日時 - 2006-10-26 19:01:33
0人が「このQ&Aが役に立った」と投票しています
OKWaveのオススメ
おすすめリンク