- ベストアンサー
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の場所も正確です。
- みんなの回答 (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/Carp.pod
その他の回答 (1)
- ralf124c
- ベストアンサー率52% (232/446)
リスト見た限りでは何が悪いのか発見できなかったので、コピペして手元のテスト用サーバで実験してみましたが、やはり正常稼動しました。 ・CGIは許可されているのか ・ファイル名は間違えていないのか ・パーミッションは正確に設定されているか ・確認時のURLは正確か ・動かないとはどういう症状か 状況を正確にお願いいたします。