![]() |
左の図は、一番やっかいな画像フォルダを [public_html]の中に入れる場合の絵です。(この他にもフォルダやファイルがありますが、省略してあります。) ところで「パス」とは、ファイルやフォルダがどこにあるかを表したもので、住所みたいものです。 「相対パス」は、あるフォルダーから見た時に、指定したいファイルやフォルダがどこにあるか、何個上に(または下に)あるかを指定するもの。 例:[ ./past/1.dat ] [ ./yybbs.log] [../../index.html]など 「絶対パス」は、指定したいフォルダやファイルを一番上の階層から見たときに、どこにあるかを指定するもの。 例:[/cgi-bin/yybbs/yybbs.cgi]と頭に「/」が付くもの。 [http://www.popo.co.jp/index.html] と言ったURL記述も絶対パスのひとつです。 と、言われてもわからないと思うので、左の絵の階層を分かりやすくしたものが、次の絵になります。 |
次の絵では[public]と文字を省略してますが、
[public_html]の中に、HPのTOPページファイル[index.html]を置いています
![]() |
パス指定を理解する上で大切なのは「階層」と呼ばれるもの。「ディレクトリの階層」などとも言います。
CGIプログラム(ここではyybbs.cgi)の書き換えの多くは、相対パスでします。
書き換えている(この場合はyybbs.cgi)から出発して、
フォルダを何個移動したら目的地にたどり着くか?というのを考えます。
上の絵の矢印は、階層の数(フォルダを何個移動するか)を表しています。
矢印を追って数えてみましょう。
[yybbs]から[public_html]へは、階層が2つ上。
[yybbs]から「img]へは、階層が3つ上。
[yybbs]から[past]へは、階層が1つ下。
となります。それぞれのフォルダを「家」と見たてると、何軒お隣さんは誰さん♪という感じ。
自分がどこにいるかのよって、お隣さんが変ってくるというのが、相対パスの考え方です。
[yybbs]から[img]へは絵では上隣ですが、直接階層を移動することはできません。
必ず、そのファイルが入っているフォルダを通って行かないとなりません。
例えば、マイドキュメントでフォルダ表示をしているときを思い出してください。
違うフォルダに入っているファイルを表示させるときは、それが入っている親分のフォルダまで戻ってこないと、
違うフォルダの中に入っているフォルダには、たどり着かないのと同じです。
この場合の親分フォルダは[public_html]と[cgi-bin]にあたり、階層の一番上にあたります。
(階層の一番上については、下にある「補足」を見て下さい)
それに対して絶対パスは、普遍の住所。東京都千代田区100番地とかね。
ネット上だと、HP−URLがこれにあたります。
またはパスの部分が「 / 」から始めると絶対パスになります。
CGIの場合は相対パスを使うことが多く、また絶対パスを使うときは、
http://〜始まるものを使えば、間違えることはないと思います。
では、それぞれに入っているファイルを相対パスで表してみます。
[yybbs]から[public_html]の[index.htnl]を指定(階層が2つ上)
"../public_html/index.html"
[yybbs]から「img]の[home.gif]を指定(階層が3つ上)
"../../public_html/home.gif"
[yybbs]から[past]の[1.dat]を指定(階層が1つ下)
"./past/1.dat"
これらは、「 ../ 」(ドット2個にスラッシュ)で階層1つ分移動しているのを表し
「 フォルダ名/ファイル名」と続いているのが理解できたでしょうか。
階層がどんどん移動していくごとに「../」が一つずつ増えていきます。
階層がひとつしか移動していないときは、頭に「
./ 」(ドット1個にスラッシュ)で、
「フォルダ名/ファイル名」となります。
[yybbs]の中には複数のファイルが入っています。
同じフォルダの中に入っているものは、階層が同じということになり次のようになります。
[yybbs.cgi]から[yybbs.log]を相対パスで指定
"./yybbs.log"
頭に「 ./ 」(ドット1個にスラッシュ)に「ファイル名」となり、フォルダ名は不要です。
CGIファイルの設定項目には「フォルダを指定する」というのもあります。
フォルダを指定するときは、お尻に「/」を付けるのを忘れないように。
[yybbs]から「img]のフォルダへは、階層が3つ上のフォルダ(ディレクトリ)
"../../img/"
[yybbs]から[past]のフォルダへは、階層が1つ下のフォルダ(ディレクトリ)
"./past/"
上の矢印を書いた絵には、親分フォルダは2つしかないですが、
もっと複数ある場合について補足しておきます。
特に開くフォルダを指定しないでサーバーに接続したとき、表示されるものが
親分のフォルダになります。
![]() |
この絵だとピンク色に塗った、「public]と「bin]と「cgi-bin]が親分フォルダです。
「publick]をダブルクリックして始めて、[img]フォルダを表示することができます。
逆にいうとこれ以上、上の階層がないフォルダのことを「一番上の階層」と言います。
この一番上の階層にあるフォルダ同士は、お隣さんを無視して直接移動できます。
[cgi-bin]の中にある「yybbs.cgi」からhome.gifを指定するときは、
上の絵の矢印をに注目してください。[bin]というフォルダは数えていません。
相対パスの記述は次のようになります。
"../img/home.gif"
もし「yybbs.cgi」ファイルから[publicl]フォルダそのものを指定するときは
"./public/"
以上の例を、自分が指定したいものに置き換えてみてください。
>>CGI TOP