質問: perlがうごきません htmlファイルには 食品名1 食品名2 cgiファイルには #! /usr/bin/perl require "cgi-lib.pl"; &readparse(); print "content-type:text/html\n"; print "\n"; print "\n"; print "\n"; print "フォーム\n"; print "\n"; print "\n"; print "おいしい$in{'form1'}\n"; print "まずい$in{'form2'}\n"; print "\n"; print "\n"; exit; cgi-lib.plはサーバーにいれております。 どうしてうごかないのでしょうか。 perlの場所も正確です。
回答: 以下補足要求 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