問題を切り分ける作業を慎重に行って下さい。
CGIの設置は、いろいろな要素を慎重に検討しないと、問題がどこにあるのかが見極めることができません。また、設置できても、そのスクリプトの設定を誤ったまま運用すると、セキュリティ上の問題が出ることもあります。
0.環境の確認
1.Perlのパス
2.SendMail利用のものはそのパス
3.パーミッションの設定
4.関連ファイル、ディレクトリの設定、設置およびパーミッション
5.CGI動作に必要な拡張子の採用と.htaccessファイルの設置
6.ファイル自体の改行コード
7.バイナリ・テキストモードの相違
8.関連ファイルのバージョン
---
Perlスクリプトは、Windowsのメモ帳では編集しない方が良いでしょう。出来るだけ専用のエディタを使って編集します。「メモ帳で編集すると、ファイルが読み込めなかったり、壊れたりするのですが?」をご参考下さい。
---
Perlは、設置しただけで動くという安易な考えではいけません。上記の基本事項の他、スクリプトによってはさらに確認事項が増えるものでもあります。
「1.Perlのパス」は、そのサーバにおいてPerlスクリプトを走らせるために必要なPerlがどこにあるのかを指定します。これは、あなたが設置しようとしているものがプログラムの本体ではなく、別に「Perl」というプログラムがあると理解してください。そして、あなたの設置しようとしているスクリプトはPerlから読み込まれて実行されているという感覚で覚えておくのが良いでしょう。以下に通常の例を示します。
#!/usr/bin/perl
#!/usr/local/bin/perl
「2.SendMail利用のものはそのパス」は、そのスクリプト上でメールを送信する場合に必要です。メールを送信する必要がない場合は読み飛ばしてください。以下に通常の例を示します。
/usr/sbin/sendmail
/usr/lib/sendmail
「3.パーミッションの設定」は、あなたが設置しようとしているスクリプトが正しく動作するために必要です。通常、スクリプトは、実行権限を持っていないと動作させることができません。これは、誰でもプログラムの実行ができるようになっていると、セキュリティ上好ましくないために導入されている考え方です。管理上出来るだけプログラムの数を減らすことができるよう、ひとまず設置する際に標準で設定されるものには実行権限がつかないようになっています。
705
rwx---r-x
上は実行権限を持つ例を示したものです。フリーソースとして公開されているものは、705や755に設定する例が多いです。705と755の差については、そのスクリプトをサーバで実行する際にはありません。また、755を指定する必要性はありません。755という権限では、あなたが設置しようとしているサーバの他のユーザにも実行権限を与えるというもので、セキュリティが甘くなることを示します。
「4.関連ファイル、ディレクトリの設定、設置およびパーミッション」は、あなたの設置しようとしているスクリプトが必要とする他のファイルやディレクトリがきちんと用意されているかどうかという確認です。これは、フリーソースとして配布されているものには必ず説明書がありますので、これを確認するようにしてください。これはスクリプトによって要求が異なります。
カウンタなどでは、プログラムの他、カウントした値を格納するためのファイルが必要ですし、カウント値を表示するために必要な画像を格納するためのディレクトリも必要でしょう。
また、jcode.plなどのサブスクリプトを必要とするものでは、そのファイル位置に気を付けます。指定された位置に設置しているかどうかはもちろんのこと、スクリプト上であなたの設置した位置へ読み込みに行くかどうかも確認することが必要です。なお、jcode.plのパーミッションは604が正しく、その他のパーミッションにする必要はありません。すなわち、設置した状態のままでパーミッションを変更する必要がありません。
「5.CGI動作に必要な拡張子の採用と.htaccessファイルの設置」
通常のサーバ、レンタルサーバを借りている場合などは、CGIを動作させるため、すでにそういった環境を用意しているはずですが、特別なルールを用意しているところもあることでしょう。例えば、CGI-BINというディレクトリの中でないと動作しないようになっているであるとか、.htaccessファイルでCGIの動作が可能なように設定されていないという点です。通常、CGIという拡張子を持つものはサーバにおいてCGIスクリプトであると理解されますが、上記のようなルールに基づき、認識されていない場合もあります。
テストスクリプトを置いて、なお動作しないときは、.htaccessファイルの設置を行うことでサーバの動作を変更することができます。ただ、.htaccessファイルは特別なファイルで、サーバの設定をどのようにでも変更することができます。このことはセキュリティ上、好ましくない使い方をされてしまうこともあります。このため、.htaccessファイルの設置をしても無効にしたり、.htaccessファイルの中で使える記述を一部制限していることもあります。
---
「6.ファイル自体の改行コード」
スクリプトを収めたファイルの改行コードも確認します。Windows上で編集を行うと、UNIX環境とは違い、「」となります。このため、この余分な改行コードが動作を妨げる原因となる場合があります。
専用のテキストエディタには、これらの改行コードを変更して保存する機能がついているものもありますので、それらを利用してください。(EmEditorなどにこの機能があります。)
---
「7.バイナリ・テキストモードの相違」
スクリプトは、通常テキストモード\\'(アスキーモード)で転送しなければなりません。これらの設定が正しくないと、他のサーバでは動くのに、このサーバだけで動かないなど、不具合が出ることになります。
---
「8.関連ファイルのバージョン」
jcode.plやCGI.pmなど、一緒に利用するソフトのバージョンが古いものだと、適切に動作しないことがあります。また、CGI自体が古いものだと周辺のソフトが新しすぎて動かないということもあります。できるだけ新しいものを使うようにします。
新しいものがリリースされていないような場合は、利用を見送る選択肢があっても良いでしょう。使えれば良いと考えるのは、セキュリティ上も好ましいことではありません。メンテナンスも手間になります。 |