名古屋市のフロントエンドエンジニアがWEB制作に関する技術メモを書いています

メニュー

ホーム > その他 > 違いを説明できますか?「フルパス」「絶対パス」「相対パス」の違い

違いを説明できますか?「フルパス」「絶対パス」「相対パス」の違い

最終更新日:

公開日:2014年03月25日

その他

どうも、くーへいです。

今日は、WEB制作者が良く使う言葉の解説として、「フルパス」、「絶対パス」、「相対パス」の違いをまとめてみたいと思います。
皆さんは、その違い、分かりますか?

違いを簡単にまとめると・・・

最初に簡単にまとめると、以下のようになります。
なお例示は一般的な構造がわかりやすいので、勤務先のカタツムリデザイン(http://www.katatsumuri-inc.com/service/homepage.html)をベースとしていますが、サーバー内部のパスはダミーです。
この記事では、公開領域を「/home/katatsumuri-inc.com/www/public_html/」とします。

「フルパス」・・・サーバー内部で、最も上位の階層から参照した際のパス
例)/home/katatsumuri-inc.com/www/public_html/service/homepage.html

「絶対パス」・・・サーバーの公開領域の中で上位の階層から参照した際のパス
例)/service/homepage.html

「相対パス」・・・参照しているファイルから見たパス(例示は/service/内の別ファイルからhomepage.htmlを参照するときのパス)
例)../homepage.html

公開領域について(2014年8月5日追記)

「公開領域についての説明が足りない」というご指摘をいただきましたので、少し踏み込んで説明します。

この記事でいう「公開領域」とは、Apacheで言うところの「DocumentRoot」を指します。
端的にいうと、ブラウザが参照できる範囲が、この「DocumentRoot」以下となります。

「PHP」や「Perl」、「Ruby」はサーバーのもっとも上位にあるフォルダ「/」(「DocumentRoot」よりも上位のフォルダ)を参照できます。

WEB制作における「フルパス」と「絶対パス」の違いとは

一般的にWEB制作者の間で「フルパス」と言われた際は、サーバーの内部で最も上位の階層から参照した際のパスを示すことが多いと思います。
「サーバーの内部で最も上位の階層」とは、サーバーを1つのコンピューターとすると、Windowsでは「C:\」ですし、LINUXでは「/」で示されます。
(Windowsの場合はドライブごとにフルパスが存在することになります)

一方で、「絶対パス」と言われた際は、サーバーの公開領域の中で上位の階層から参照した際のパスを示します。
「サーバーの公開領域の中で上位の階層」とは、「/」を指します。

ここで注意したいのは、「フルパス」における「/」と、「絶対パス」における「/」は意味が違うということです。

通常、WEB制作者がコーディングの際に使うのは「絶対パス」における「/」でしょう。
上記の例でいえば、単に「/」と指定することで、「http://www.katatsumuri-inc.com/」を指定したことと同じ意味になります。
「/service/」と指定することで、どのファイルから参照しても、「http://www.katatsumuri-inc.com/service/」を指し示しているとサーバーは解釈します。
これは、内部的には「/home/katatsumuri-inc.com/www/public_html/」を「/」と書き換えているにすぎません。

では、「フルパス」はどうかというと、「/」とすると「絶対パス」の「/home/katatsumuri-inc.com/www/public_html/」ではなく、一文字目の「/」を指していて、全く別のフォルダを指し示すこととなります。

ここで、疑問となるのが、どういうときに「フルパス」と「絶対パス」の違いを判断するのかということでしょう。
それは、それを指定しているファイルの違いです。

「HTML」や「CSS」はあくまでサーバーの公開領域内でのみ参照でき、参照されます。
他方、「PHP」や「Perl」、「Ruby」はサーバーの公開領域よりも上のファイルを参照したり、参照されたりできます。

つまり、「HTML」や「CSS」内には「フルパス」は指定できませんし、「PHP」や「Perl」や「Ruby」および「.htaccess」では「絶対パス」は使えません。
「相対パス」は「HTML」や「CSS」、「PHP」や「Perl」や「Ruby」および「.htaccess」はいずれも同じ意味を持ちます。
ただし、「HTML」や「CSS」では相対パスであっても公開領域外のファイルは参照できません。

ちなみに、WEB以外の世界では、「フルパス」と「絶対パス」は同じものを指します。
「公開領域」という特殊な環境があるために区別された、WEB独特の違いなのです。

「フルパス」を取得するための記述方法

「フルパス」は公開領域よりも上のファイルを参照しますが、公開領域が「フルパス」で書くとどういったパスになるのかは調べるのが困難です。
その際は以下のコードで取得できますので、参考にしてみて下さい。
(PHPコードになります)

<?php
echo __FILE__;
?>

まとめ

検索エンジンで「フルパス 絶対パス 違い」で検索すると、「違いはない」とする記事も多く見られますが、それはWEB業界を除いた話です。
違いは何だろうと疑問を持った方の中には、WEBの話をしている方もいるかと思いますので、その際はこの記事を参考にしてみて下さい。

関連記事

Twitterにて更新情報などを配信しています

スポンサードリンク