WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:Apache上でCGIが動かせません。

0:[投稿] ぱんだ [2004/01/20 17:22 ][環境:WINDONS XP Apache]

今までAn Httpdを使っていたのですが、ユーザー認証システムを
作りたいのでApacheにしました。
Apacheの設定はうまくいってるはずなのですが、
cgiプログラムをいざ開こうとすると
「500 Internal Server Error」と表示されてしまいます。

CGIプログラムにバグがあるのでしょうか??
ソースを載せておきますので、ぜひお力を貸してくださいm(--)m

#!/bin/perl/

$USERFILE  = './users.dat';
$CHARSET   = 'Shift_JIS';

# ユーザファイル読み込み
open(FILE, "<$USERFILE") or die("ユーザファイルが開けません。");
while($ln = <FILE>) {
    chomp $ln;
    ($name, $pass) = split(/:/, $ln);
    $USERS{$name} = $pass;
}
close FILE;

# ユーザ管理ページ出力
print "Content-type: text/html; charset=$CHARSET\n\n";
print "<html>\n";
print "<head><title>ゆーざかんり</title></head>\n";
print "<body><h1>ユーザ管理</h1>\n";
print "<h2>新規ユーザ登録</h2>\n";
print "<form action="$ENV{'SCRIPT_NAME'}" method="POST">\n";
print "ユーザ名:<input type="text" name="user"><br>\n";
print "パスワード:<input type="password" name="pass"><br>\n";
print "<input type="hidden" name="mode" value="adduser">\n";
print "<input type="submit" value="登録する">\n";
print "</form>\n";
print "<hr>\n";
print "<h2>ユーザ削除</h2>\n";
print "<form action="$ENV{'SCRIPT_NAME'}" method="POST">\n";
print "<table border="1">\n";
print "<tr><th>削除チェック</th><th>ユーザ名</th></tr>\n";

foreach $name (sort keys %USERS) {
    print "<tr><td><input type="checkbox" name="del_$name"></td><td>$name</td></tr>\n";
}

print "</table>\n";
print "<input type="hidden" name="mode" value="deluser">\n";
print "<input type="submit" value="削除する">\n";
print "</form>\n);
print "</body>\n);
print "</html>\n);


1:[保留] ぱんだ [2004/01/20 17:25 ]

あ、最後の3行
print "</form>\n";
print "</body>\n";
print "</html>\n";
にちゃんとなおしております^^;


2:[回答] ふじ [2004/01/20 19:59 ]

Apache を自分で動かしているのなら、エラーログを見ましょう。
Internal Server Error の理由が出ているはずです。

それはそれとして、
> print "<form action="$ENV{'SCRIPT_NAME'}" method="POST">\n";
この行の " の対応がおかしいですね。

この手の単純な文法エラーは、CGIとして動作させる前にコマンドラインから

perl -wc xxx.cgi

として実行させれば分かります。


3:[回答] andi [2004/01/20 21:49 ]

> Apacheの設定はうまくいってるはず

「はず」な根拠が良く分かりません。
例えば最小のエラーの出ないCGIプログラムでは問題無かった、とか?


4:[回答] winman [2004/01/20 22:30 ]

とりあえず このソフトで文法チェックしましょう。
「Perlを始めよう! v.2.0.5.4」
http://homepage3.nifty.com/aokura/

print "この中で「"」は使えません。「\"」とかに置き換えましょう。\n";
それでもエラーが出る場合は
#!/bin/perl/
が 実際のパスと違うことになります。
さらに、それでも解決しない場合httpd.confを見直しましょう。


5:[完了] ぱんだ [2004/01/22 00:24 ]

すみません。「Apacheの設定がうまくいっているはず」の
根拠は、他のプログラムは作動し表示されるからです。
しかし、エラーのチェックの仕方は全然わかっていなかったので
もう一度勉強しなおして、また分からなければ来ます。
お世話になりました^^

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World