良くある質問とその答(FAQ)このページは皆さんからの質問に答えるページです。困ったことがあればどんどんメールをください。同じ事で悩んでいる人は多いと思います。したがって、質問があればこのページはどんどん更新されていきます、きっと。CGIが動かない:1Q:コマンドライン(telnet、ktermなど)から実行しようとして# ./hoge.cgi とすると、[hoge.cgi: Permission denied]とでてしまい、実行できない。 A:パーミッションを変更してください。パーミッションの説明はこちら。 # chmod 755 hoge.cgi などとしてください。どのファイルがどのパーミッションなのかはそれぞれの主プログラムに記載していますので、その通りにしてください。 CGIが動かない:2Q:コマンドライン(telnet、ktermなど)から実行しようとして# ./hoge.cgi とすると、[Illegal character \015 (carriage return) at hoge.cgi line2. (Maybe you didn't strip carriage returns after a netwark transfer?)] などというエラーメッセージが出てきて実行できない。 A:これは改行コードがUNIX用でないために起きます。 MS-WindowsでCGIを作成された方は、改行コードを以下のようにして変換します。 # cat infilename | tr -d "\015" > outfilename MacintoshでCGIを作成された方は、改行コードを以下のようにして変換します。 # cat infilename | tr "\015" "\012" > outfilename CGIが動かない:3Q:コマンドライン(telnet、ktermなど)から# perl -c hoge.cgi としたら、[Syntax OK]となり問題が無いはずなのに、ブラウザで試すと[500 Internal Server Error]となってしまい、動きません。 A:原因はいくつか考えられます。まず、.htaccessというファイルはきちんと設定してあるかどうか確認し てください。詳しくはこちら。 次に、 # ./hoge.cgi としてきちんと動くかどうか確認してください。 もし./hoge.cgi : No such file or directory と出たら perl のパスがあっているかどうかを確認してください。詳しくはこちら。 そして、パーミッションが指定された通りになっているかを確認してください。詳しくはこちら。 それでもだめなら、プログラムの先頭付近に print "Content-type: text/html\n\n"; という1行を追加して見てください。 これでも駄目なら私に連絡して見てください。 文字が化けるQ:掲示板で書き込んだ文字が化けてしまいます。A:これは、掲示板本体の文字コードと、新たに書き込まれた文字コードが異なるために起きる問題です。従って、新たに書き込まれた文字コードを掲示板本体の文字コードと同じにすれば良いのです。具体的には、 &jcode'convert(*value, 'euc'); というような部分の [euc] を掲示板本体の文字コードと同一にすれば良いです。もし掲示板本体を sjis で保存しているならば [sjis] に、jis で保存する場合(があるのかどうかは知りませんが)は [jis] にすればいいです。 perl 4しか無いQ:perl 5 がインストールされていません。どうしたら良いでしょうか。A:私のプログラムでは perl 5 用に書かれているため、perl 4 では動かない場合やエラーが出たりする場合があります。ただし、私のプログラムで perl 4 にはなく perl 5 にはあるものというのは [chomp] という命令だけです。という事で、プログラム内の [chomp] を全て [chop] に書き換えてください。これでも多分きちんと動くとは思いますが、保証の限りではありません。ちなみに [chop] とは、最後の文字を削除する命令で、[chomp] とは、最後の文字が改行コードの場合のみ最後の文字(すなわち改行コード)を削除する命令です。従って、100%確実に同じ動作を期待するならば以下のように書き換えてください。 chomp($hoge); ならば、 $hoge =~ tr/\n//d; です。これならば全く同一なのでこの部分に関しては確実に動作します。ただし、その他にも問題が無いとは限らないので、ここ以外の問題で perl 4 で動かない場合はお知らせください。 |