CGIのカスタマイズ−基礎編−

まずCGIをカスタマイズする時の注意を述べてみよう。

CGIの最初のカスタマイズ

 まず大抵のCGIはperlへのパスを指定した後は、各ファイルまた自分のホームディレクトリへのパスの指定を行う必要があります。この指定を間違えると起動エラーを起こしたり、画像などが表示されなかったり、ログが作成・認識されなかったりの様々なエラーが起こります。
 バスの指定方法にも2種類あって、絶対パス相対パスで指定する場合がありますが、特にCGIを別ディレクトリに設置しなければいけないプロバイダの場合はその設置する場所とパスの指定方法をよく確認しておく必要があります。

絶対パス(フルパス)と相対パスとは

一口にパスと言っても、表記にはいろいろあります。

 $logfile = './bbs.log';
 $logfile = 'bbs.log';
 $logfile = 'http://www.***.ne.jp/~***/cgi-bin/bbs.log';
 $logfile = '/home/***/public_html/cgi-bin/bbs.log';

 一番上のと2番目のものは同じようなもので相対パスと呼ばれています。
 そのファイルから見た指定するファイルへの距離(位置)とお考え下さい。
 同じサーバー内やローカルエリア内(自分のパソコン内)にあるファイルを指定する場合はこれでかまいませんが、ものによっては絶対パスしか使用できない場合があります。また逆に、相対パスしか駄目な場合もあります。

 3番目のは、アドレスとかURLと呼ばれるものです。4番目のと似ていますが、インターネット上から見た指定するファイルの場所です。

 絶対パスは同じサーバー内にあるもの以外のもの指定する際に使いますが、別に同じサーバー内にあっても(特に制作者から指定されていなければ)相対パスのかわりに使うことができます。

 4番目のが、ディレクトリの一番上の階層からのパスです。絶対パス、またはフルパスと呼ばれているものです。しかし人によっては(または書籍によっては)3番目のを絶対パス、またはフルパスと表記している場合もあります。
 これはプロバイダ(サーバー)によって異なります。相対パスでも代用できる場合もあります。

ディレクトリとは

 ディレクトリ構成には大きく分けて4種類あります。

1.CGIを自由に設置出来るプロバイダの場合。
usr -- public_html ----- index.html
             |
             |
             |-- bbs ---- bbs.cgi
             |      |
             |      |-- jcode.pl  
             |      |
             |      |--- tmp --- tmpファイルなど
             |      |
             |      |--- image --- bcg.gifなど
             |
             |-- chat --- chat.cgi

2.CGIを設置するディレクトリを指定されているプロバイダの場合。-A-
usr -- public_html ----- index.html
   |          |
   |          |-- ***.html
   |
   |-- cgi-bin --- bbs ---- bbs.cgi
           |     |
           |     |-- jcode.pl  
           |     |
           |     |--- tmp --- tmpファイルなど
           |     |
           |     |-- image --- bcg.gifなど
           |
           |-- chat --- chat.cgi

(cgi-bin ディレクトリに新しくディレクトリを作ることが出来・かつ画像ファイルなども置ける場合)

3.CGIを設置するディレクトリを指定されているプロバイダの場合。-B-
usr -- public_html ----- index.html
   |          |
   |          |-- image --- bcg.gifなど
   |          |
   |          |-- ***.html
   |
   |
   |-- cgi-bin --- bbs ---- bbs.cgi
           |     |
           |     |-- jcode.pl  
           |     |
           |     |--- tmp --- tmpファイルなど
           |
           |-- chat --- chat.cgi

(cgi-bin ディレクトリに新しくディレクトリを作ることが出来る場合)

4.CGIを設置するディレクトリを指定されているプロバイダの場合。-C-
usr -- public_html ----- index.html
   |          |
   |          |-- image --- bcg.gifなど
   |          |
   |          |-- ***.html
   |
   |
   |-- cgi-bin ---- bbs.cgi
           |
           |-- jcode.pl  
           |
           |-- tmpファイルなど
           |
           |-- chat.cgi

(cgi-bin ディレクトリに新しくディレクトリを作ることが出来ない場合)

 またそれ以外にもusrの前のディレクトリでcgi-binディレクトリが分かれているプロバイダもあります。

 上記の場合1番の場合が一番簡単で、パスの指定も殆ど相対パスで指定出来ますが、2番・3番・4番の場合はプロバイダによって呼び出し方は変わりますし、相対パスで可能な場合と絶対パスでなければならない場合とがあります。特にHTMLを参照したりGIFを表示したりする時には特に注意が必要です。プロバイダのCGI設置の説明をよく読んで指示して下さい。
 一般的にはCGIからGIFなどを呼び込む場合はhttpからの絶対パスが多いようです。

 また4番の場合tmp、log、txt、lockなどCGIが必要に応じて書き込むファイルはいくつかのCGIを使う場合、そのファイルの名前がダブらないよう注意する必要があります。またプログラムによってディレクトリを必ず作らなければならない場合はそのプログラムは使用出来ません。

sendmailとは

 sendmailとはフォームなどのCGIでそれらのデータをメール送信するために必要です。またCGIによっては掲示板などに書き込みがあった場合管理者にそれをメールで通知したりするのに使用されます。
 ですがプロバイダによってはサーバーへの負担を避けるためにsendmailを解放していない場合もあります。
 CGIによってはsendmailが必ず必要なものもありますので、自分の利用しているプロバイダがどこまで許可しているのかよく調べておく必要があります。