Top / CGI相談室 / トラブル / パス指定

space

パス指定

Top / CGI相談室 / トラブル / パス指定

Last-modified: 2006-11-20 (月) 10:26:45

ファイルやディレクトリへのパス指定

cgiの設定を書き換えてるときに、よく悩むのがパス指定です。
パスの指定方法には、絶対パス(フルパス)相対パスがあります。

相対パス

相対パスとは、あくまでも対象が自分の位置を起点としてみた位置関係を指します。

./

は、同一ディレクトリを指します。

../

は、1つ上のディレクトリを指します。

../../

は、2つ上のディレクトリを指します。

../bbs/

は、1つ上のディレクトリにあるbbsディレクトリを指します。

  • 【相対パスの例】
     public_html / index.html ...(1)
        |
        +-- cgi-bin / jcode.pl ...(2)
        |
        +-- bbs / bbs.cgi ...(3)
             |
             +-- member / chat.cgi ...(4)
  • (3)から見た(1)の位置 [1つ上位の位置]
    一つ上のディレクトリの中にある「index.htm」を指します。
    ../index.html
  • (3)から見た(2)の位置 [平行の位置]
    一つ上のディレクトリの中にある「cgi-bin」ディレクトリの中の「jcode.pl」を指します。
    ../cgi-bin/jcode.pl
  • (4)から見た(1)の位置 [2つ上位の位置]
    二つ上にあるディレクトリ内の「index.htm」を指します。
    ../../index.html
  • (4)から見た(2)の位置
    二つ上にあるディレクトリの中にある「cgi-bin」ディレクトリの中にある「jcode.pl」を指します。
    ../../cgi-bin/jcode.pl 

参考:KENT-WEBさん

絶対パス(フルパス)

絶対パス(フルパス)とは、自分がどこにいても不変の位置を指します。
ただし、フルパスには大きく2つの意味があるので注意が必要です。

  1. / (スラッシュ)から始まる「フルパス」
  2. http://から始まる「フルパス」

これは、サーバーにの設定によって違いますので、自分の使用しているサーバーの値を知っておいてください。

フルパスの例

/から始まるフルパスは、このようなものです。

/home/kirinn/www/

これがホームディレクトリのフルパスだとした場合、ホームディレクトリの中にある「cgi-bin」ディレクトリを指す場合は、次のようになります。

/home/kirinn/www/cgi-bin/

これは、あくまでも例ですので、実際のフルパスはサーバー管理者に問い合わせてください。

CGIでよくある話

よくCGIスクリプトのログの記述法で、「フルパスで記述してください」とあるのは、大抵上記の例では、1.(/ からはじまるフルパス)をいいます。

(/ からはじまる)フルパスの求め方は以下の3とおりの方法があります。

  • シェル(telnetで自分のホームページ領域に入りUNIXコマンド使用可能)の使えるプロバイダであれば、「フルパス」を知りたいディレクトリで、pwdというコマンドを打ち込むとその「フルパス」が表示されます。
  • プロバイダへメールで直接たずねてみる。
  • KENT-WEBさんのユーティリティCGI、「フルパスビューワー」をダウンロードし、フルパスを知りたいディレクトリで実行すると「フルパス」が表示されます。

参考:KENT-WEBさん

cgi専用ディレクトリ

サーバーの設定等により、cgiを設置するディレクトリが決められている物がよくあります。
サーバーの負荷を分散させるためであったり、セキュリティの面であったりと、さまざまな理由からそのようになっています。

cgi専用ディレクトリから画像ファイルを読み出せない

サーバーの設定により、cgi専用のディレクトリからは、htmlや画像ファイルを読み出せないようになっている物があります。
そんな時のパス指定の方法は、以下のような設定にしましょう。

前提事項

  • 公開するファイルは、専用のディレクトリ内に設置する。
    (ここでは「public_html」とします)
  • cgiファイルは、cgi専用のディレクトリに設置する。
    (ここでは「cgi-bin」とします)
  • 画像ディレクトリは、htmlと同じディレクトリ内に作成する。
    (ここでは「img」とします)
  • $imgdirという値が、画像ディレクトリへのパス指定記述部分とします。

public_html内にトップページ等のhtmlとcgi専用ディレクトリが入っている場合

public_html / index.html
    │
    ├img / 001.gif
    │
    └cgi-bin / krn.cgi

public_html内にimgディレクトリを作成し、以下のように指定します。

$imgdir = '../img';
(相対パスで指定の場合:cgi-binディレクトリの1階層上にあるimgディレクトリを指定)

public_html内にhtml専用ディレクトリとcgi専用ディレクトリが入っている場合

public_html
    ├ html / index.html
    │  │
    │  └img / 001.gif
    │
    └cgi-bin / krn.cgi

public_html内のhtmlディレクトリ内にimgディレクトリを作成し、以下のように指定します。

$imgdir = '../html/img';
(相対パスで指定の場合:1階層上ではpublic_htmlディレクトリ内なので、さらにhtmlディレクトリ内のimgディレクトリを指定)

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2006-11-20 (月) 10:26:45 (4204d)
[ Counter today ]