@niftyのCGI設置共通注意事項 最終更新日:2000/11/14(Tue)


 
CGI設置でお困りの方へ、ニフティの自作CGIの代行設置もおまかせ下さい!
 

このページでは、 nifty @homepage で、自作CGIを設置する場合の「共通の注意点」に触れています。
個々の「CGI設置事例」を参照する前に、このページを一通りご覧になることをお勧めします。

perlのパスについて
 nifty @homepage では、perlのパスは、「/usr/local/bin/perl 」となります。
 スクリプトの1行目には必ず「
#!/usr/local/bin/perl 」と記述します。

ディレクトリ構造について
ftpソフトで見えるの@niftyの標準ディレクトリ構造は以下の通りです。

Root/
 |
 
+---bin/
 |
 +---cgi-bin/  @http://hpcgi▲.nifty.com/■■■■■■ が参照URLアドレス
 
|            ※cgiスクリプトやlog、datファイルを置く所
 
+---dev/
 |
 +---etc/
 |
 +---homepage/ Ahttp://homepage▲.nifty.com/■■■■■■ が参照URLアドレス 
 
|             ※index.html等のHTMLや画像ファイルを置く所
 
+---lib/
 |
 +---user/

 ※ (部分には数字が入ります。■■■■■■部分はあなたが取得したユーザーID名です。)

参照URLについて
 @niftyでは,CGIスクリプトを置く場所にHTMLファイルや画像ファイルを置けないという制限があります。
 CGIスクリプトの設置場所(/cgi-bin)にHTMLファイルや画像ファイルを設置しても正しく表示されません。(※一部例外あり)
 以下の例の様に、CGI関連のファイルとCGIが参照するHTMLファイルや画像ファイルを分けて設置する必要があります。

(1)CGIスクリプト関連のファイル(拡張子が .cgi、.pl、.log、.dat等)
  FTPで転送する場所  … /cgi-bin/
{任意dir名/}ファイル名
  同上パスの参照URL … 
http://hpcgi.nifty.com/■■■■■■/{任意dir名/}ファイル名

(2)通常のHTMLファイル、画像ファイルや音楽ファイル(拡張子が、.html、.gif、.jpg、.mid等)
  FTPで転送する場所  … /homepage/
{任意dir名/}ファイル名
  同上パスの参照URL … 
http://homepage.nifty.com/■■■■■■/{任意dir名/}ファイル名

  ※{任意dir名}というのは、ユーザーが任意に作成するサブディレクトリのことです。(省略することも出来ます)
    通常は、cgi-bin/homepage/の下に、/cgi-bin/bbs/という様にコンテンツ独自のサブディレクトリを作成します。
    具体的な事例は「
具体的な設置サンプル」の項を参照して下さい。


cgiスクリプトの中でのURL、パスの指定について


(1)ホームページのindex.htmlの参照URL
 http://homepage.nifty.com/■■■■■■/index.html

(2)cgiが使うHTMLや画像ファイルの参照URL  
 http://homepage.nifty.com/■■■■■■/{任意dir名/}画像ファイル名 

(3)cgiスクリプトの呼び出しURL
 http://hpcgi.nifty.com/■■■■■■/{任意dir名/}スクリプト名

(4)cgiスクリプトのあるディレクトリの絶対パス
 /cgi-bin/{任意のdir名/}ファイル名      ※注

(5)cgiの使う画像ファイル等がある絶対パス
 /homepage/{意のdir名/}画像ファイル名 ※注

※注:URL指定とパス指定の違い
  CGIスクリプトの設定では、ホームページの戻り先等を「$homepage="www.xxx.ne.jp/~user/index.html";」という風に
  色々なURLアドレスを指定する変数が良く登場します。
  まれに「
$datapath="./"; #パスを指定して下さい」等と「パス指定」を要求する変数が登場することがあります。
  この様な変数に「
$datapath="http://www.xxx.ne.jp〜";」なんて指定をすると確実にエラーになります。

  この、パス指定ってなんでしょうネ?
  MS−DOSやってた人なら分かると思いますが、パスとはファイルの場所を表す文字列ですね。
  ちなみにURLってのは、簡単に言うとコンピュータの識別名+パスの事です。(あってると思う…)

  CGIスクリプトでは、ファイルを表示したりHTMLタグでリンクする場合には「
URL指定」します。
  open命令やIF命令でファイルを調べたり直接操作する場合は「
パス指定」します。

  @niftyでは、画面に表示するHTMLファイルや画像ファイル(gif、jpg等)をCGIと同じパスに置くことが
  出来ないので、CGIスクリプトの中でopen命令やif命令文でファイルのパスを直接指定する必要がある
  場合には、絶対パス相対パスを用いる必要があります。
  CGIスクリプトの中でファイルのアドレスを設定する変数の使い方が分からない場合は、エディタの検索
  機能でスクリプトが変数をHTMLリンクで使用しているか命令で使用しているか確認すると良いでしょう。

   Root/ … Userのルートパス
    |
    |---cgi-bin/ …@つ目のパス
    |    |
    |    |----bbs/ …Aつ目のパス
    |        
bbs.cgi …このcgiスクリプトから見た「welcome.html」の位置。
    |                絶対パス=「
/homepage/guest/welcome.html」となる。
    |                相対パス=「
../../homepage/guest/welcome.html」となる。
    |---homepage/
         |
         |----guest/
             
welcome.html

上記の相対パスは、「cgiスクリプトのある場所から2つ上に戻ってパスを指定する」ということです。
Root/から数えてcgiスクリプトの置き場所が2つ目のディレクトリにある場合は2戻る訳です。

cgiスクリプトの中での使用例
 リンク参照で場所を指定する場合は、http://〜で指定する。(1)、(2)、(3)
 (例)print "[<a href=\"http://homepage?.nifty.com/<UserName>/index.html\">トップにもどる</a>]\n";

 コマンドで場所を指定している場合は、絶対パス又は相対パスで指定する。(4)、(5)
 (例)open(IN,"/cgi-bin/dir名ファイル名>") || &error("Can't file open");


具体的な設置サンプル

※具体的サンプルとして、サーバー番号を、ユーザーID名をguestと仮定して、
  有名な「KENT-WEB」のYYBOARDを設置する場合のディレクトリ構造の例を示します。
  YYBOARDは、タイトル、壁紙、アイコン等に画像ファイルを使用できる掲示板です。

※cgiの設置場所に制限の無いサーバーの場合は、/cgi-bin/yybbs/の下に全ての
 ファイルとフォルダを展開すれば良いのですが、@niftyの場合は以下の様になります。

Root/
 |
 
+---bin/
 |
 +---cgi-bin/  ← @http://hpcgi1.nifty.com/guest/
 |      |
 |      +---yybbs/
 |           yybbs.cgi、yybbs.log、count.dat、jcode.pl  
 
|
 +---dev/
 |
 +---etc/
 |
 +---homepage/ ← Ahttp://homepage1.nifty.com/guest/
 |         |
 |         +---yybbs/ タイトル画像や壁紙の設置場所  
 
|               |
 |               +---icon/ アイコン画像の設置場所
 
|
 +---lib/

上記の様に、cgi-bin/の下に置けるファイルは、cgiスクリプト本体と、log、dat等のデータファイル類等だけです。
ブラウザ画面に直接表示するHTMLや画像ファイル等は全てhomepage/ディレクトリの下に配置する必要があります。
上記の設置例の場合スクリプトで参照するタイトル画像やアイコン画像のパスとURLは以下の様になります。

(1)タイトル画像や壁紙の参照URL  http://homepage1.nifty.com/guest/title.gif
(2)アイコン画像の参照URL    http://homepage1.nifty.com/guest/icon/icon01.gif   
(3)yybbs.cgiの呼び出しURL  http://hpcgi1.nifty.com/guest/yybbs/yybbs.cgi
(4)cgiスクリプトのあるディレクトリの絶対パス  /cgi-bin/yybbs/yybbs.cgi  
(5)cgiが参照するタイトル画像の絶対パス  /homepage/yybbs/title.gif
(5)cgiが参照するアイコン画像の絶対パス  /homepage/yybbs/icon/icon01.gif


cgiを呼び出すURLは…
  cgiを呼び出すURLは、http://hpcgi.nifty.com/■■■■■■/任意のdir名/cgiスクリプト名です。
  (例)http://hpcgi1.nifty.com/guest/yybbs/yybbs.cgi

  ※良く行われる間違いとして、http://homepage1.nifty.com…のURL指定でcgiを呼び出す事があります。


@niftyのcgi設置注意点の共通事項については、以上です。