[PHP] ファイルには絶対パスでアクセスする

include などでファイルを参照するとき、 ../hoge.php と書くと、”今いる場所を基準”として相対的な位置にあるファイルを探すことになります。この書き方を【相対パス】と呼びます。
ところで、”今いる場所を基準”とするわけですが、今いる場所ってどこでしょうか?
それは、プログラムが開始するPHPファイルのディレクトリです。

コード中で、 includeやrequireを多用していると、どのPHPファイルを基準とした相対パスなのか分からなくなってきます。さらに、includeした中で、includeしてたりすると、相対パスだけではどうにもならなくなります。

相対パスの反対が、【絶対パス】です。絶対パスは、 /home/hoge/public_html/fuga.php のように、パスを省略しない書き方で、絶対パスで示されるファイルは確実にそのファイルを指す事になります。

コンピュータの目線で考えても、相対パスの場合、現在のパスを基に絶対パスを作り出す必要があるわけです。絶対パスなら、その過程を飛ばせることになるので、多少の速度アップというメリットも付いてきます。

ここからは私の手法になりますが・・・
server_dependence.php というファイルを新規作成します。
【server dependence】は、【サーバ依存】という意味です。

server_dependence.phpには、次のコードを含めます。

<?php
  // 本システムのルートディレクトリ
  define('C_PATH_ROOT', '/hoge/fuga/');
 // ドキュメントルート
  define('C_PATH_PUBLIC', C_PATH_ROOT. 'public_html/');
   // プログラムコードを格納
  define('C_PATH_PROGRAM', C_PATH_ROOT . 'program/');

C_PATH_ROOT には、開発しているシステムに必要なファイル全てを格納する最上部のディレクトリを指定します。
例の /hoge/fuga/ では、fugaの中に全てのファイルを格納することになります。

C_PATH_ROOT が決まってしまえば、残りは必要に応じて、ディレクトリを定義していきます。

そしてPHPファイルの中で次のように使います。

include C_PATH_PROGRAM . 'piyo.php';

C_PATH_PROGRAM には、/hoge/fuga/program/ が入っているので、

include '/hoge/fuga/program/piyo.php';

このように、記述したのと同じ意味になります。

開発環境は自分のPCで、本番環境はレンタルサーバなどの場合、全く同じディレクトリ名にプログラムを配置するのは難しいことと思います。

このように定数宣言しておけば、define(‘C_PATH_ROOT’, ‘/hoge/fuga/’); の箇所を変更するだけで、どこのディレクトリに配置しても動作できるようになります。

※C_PATH_ROOT 以下は、開発環境・本番環境ともに全く同じ構成です。

つぶやくつぶやく

No related posts.

関連記事はYARPP関連記事プラグインによって表示されています。

Yahoo!ブックマーク Googleブックマーク はてなブックマーク livedoorClip del.icio.us newsing FC2 Technorati ニフティクリップ iza Choix Flog Buzzurl 

No user responded in this post

Subscribe to this post comment rss or trackback url
Leave A Reply

 Username (Required)

 Email Address (Remains Private)

 Website (Optional)

Yahoo!ブックマーク Googleブックマーク はてなブックマーク livedoorClip del.icio.us newsing FC2 Technorati ニフティクリップ iza Choix Flog Buzzurl 

(株)オルタ

香川県高松市。

ホームページ制作
・ショッピングサイト制作
・コミュニティサイト制作
・システム開発
・各種業務アプリケーション
・仕様作成、設計、開発、運用、保守...

カレンダー

2008年8月
    9月 »
 12
3456789
10111213141516
17181920212223
24252627282930
31  

検索

カスタム検索

自己紹介

aulta (オルタ)
香川県高松市在住。
1979年2月生の男。
- - - - - - - - - - - -
PHP, Perl, JAVA, Tomcat, MySql, Oracle, Sql Server, Linux, html, xml, css, javascript, VB, VC, etc...
- - - - - - - - - - - -
香川でプログラムやweb関係の方と仲良くなりたいと思ってます。あっでも地域も趣味も幅広く色んな人と仲良くなりたいので、私に興味を持たれた方はお気軽に【ご連絡】ください。