2004年9月15日 CGIが動かない!!

「CGI配布サイトで掲示板CGIをゲットしてきたんだけど、動かない〜!」と嘆いた経験はありませんか?
わたしはあります。‥っていうか、しょっちゅうです。

CGIの設置ができない!!
設置したけど動かない!!

もう、CGI設置に関しては、ありとあらゆる初歩的ミスを経験してきました。 今日はそうした豊富な経験(?)を生かし、「CGIが動かない場合のチェックポイント」を、 書いてみたいと思います。

CGIが動かないときのチェックポイント

そもそもCGIの設置は可能か
実は、CGIの設置ができないサーバーもあります。 特に、無料サーバーの場合はCGIの設置を許していないところのほうが多いかも。 サーバーの利用規約を読み直し、もし設置が許可されていないようならば、設置は無理ですので、 レンタルCGIの利用を考えましょう。 人気の高い掲示板やカウンター、Blogなどは、スペースごと貸し出されていることが多いものです。
perlへのパスは正しく書き換えたか
CGIプログラムの多くは、perlというプログラミング言語で書かれています。 この言語を理解し、その命令をコンピュータに伝えてくれるいわば"通訳"がいないことには、始まりません。 perl通訳がどこにいるかは、サーバーによってまちまちで 場合によってはCGIソースの最初の行を書き換える必要があります。 たとえば、わたしが配布しているCGIソースは、一行目が

#!/usr/bin/perl

となっていて、クールオンラインならこのままでOKですが、 他のサーバーではこれを

#!/usr/local/bin/perl

など(サーバーによって違うので、サーバー利用条件等を読んで確認する)に書き換える必要があります。
パーミッションを正しく書き換えたか
htmlファイルは、転送ソフトにアップロードするだけでたいてい動きますが、 CGIプログラムおよびそれに関連するファイルは、 パーミッション(アクセス権) を適切に設定する必要があります。 アップロードした際にはまず、パーミッションを書き換えましょう。 たとえばFFFTPの場合、ホスト側(右側)のファイル名の上で右クリック→「属性変更」を選ぶと、 属性変更ダイアログが表示されます。 どんな属性に変更するかは、配布元とサーバーの指示に従ってください。 場合によってはいくつものパーミッションを変更する必要がありますが、変更し忘れが一つでもあると、 てきめんに動かなかったりします。 わたしの経験で言うと、最も忘れやすいのが、lockディレクトリのパーミッションですね。
リンクは正しいか
「CGIが動かない!」というとき、 実は「CGIが動かない」わけじゃなくて、 単に「CGIが呼び出せていない」だけだった、ということがままあります。 なので、「CGIが動かない!」と思ったら、まずはアドレス欄に直接CGIアドレスを指定して呼び出してみましょう。 それで正常に動作するならば、CGIではなく、CGIを呼び出すHTML側の記述が間違っているのです。 特に、相対パスは間違いやすいもの。 "../"が一つ足りないなんてことはありませんか。
引数は正しいか
アクセス解析系に多いのですが、パスの後ろに引数を指定するタイプのCGIもけっこうあります。

hoge.cgi?mode=xxx&hp=yyy

‥みたいな感じで呼び出すものです。 ?以降は、CGIに渡す情報であり、この書式や値が間違っていると、これまたCGIはてきめんに動きません。
また、引数付きのアドレスが長いからといって、アドレス部分を途中でくぎって二行にしてたりしていませんか。 アドレス部分を途中で区切るのはNGです。どんなに長くても、アドレス部分は途中で改行してはいけません。 これも、アドレス欄に直接引数付きのCGIアドレスを打ち込み、 期待通りに動くかどうかでチェックしてみましょう。
各種設定は正しいか 1
配布されているCGIプログラムはたいてい、 使用者が自分仕様にカスタマイズして利用するようになっています。 ところが、このソースの書き換えが意外と難しい。 たとえば、

title = "xxxx";

のxxxを「○○の掲示板」という名称に変えようとして

title = "○○の掲示板";

とするつもりが、「"」や「;」をうっかり消してしまったりすると、それだけでCGIはエラーしてしまいます。 こういう箇所は、変更したい文字列(この場合はxxx)をドラッグし、 そこに書き入れたい文字列(○○の掲示板)を打ち込むなどの対策で、「うっかり間違い」を防ぎましょう。
また、こうした間違いは後からではなかなか見つけづらいので、 間違った箇所を見つけて修正するよりも、ダウンロードしてきたばかりのソースに一旦戻し、 最初から書き直すほうが無難だったりもします。
各種設定は正しいか 2
設定の中で、最も間違えやすいのは、ファイルへのパスです。 これはもう、すごく間違いやすい。 配布されているCGIプログラムはたいてい、必要なファイルとセットになっていて、 書き換える必要がなるべくないようにあらかじめ設定されているものですが、 自分で個別に設定しなければならない箇所があることもあります。 これを間違えると、ファイルがオープンできないので、エラーとなります。