- 2006-10-05 (木) 0:50
- PHP
include_pathを設定する方法には、大きく分けて2通りあります。設定ファイル(php.ini/httpd.conf/.htaccess等)に記述する方法とPHPソースに記述する方法です。
記述例
設定ファイルに記述
; php.ini include_path = ".:/usr/local/lib/php/pear" ; httpd.conf / .htaccess php_value include_path ".:/usr/local/lib/php/pear"
PHPソースに記述
< ?php $lib = dirname(dirname(__FILE__)) . "/lib"; // PHP4.3.0以降 set_include_path(get_include_path() . PATH_SEPARATOR . $lib); // 全バージョン対応 ini_set('include_path', ini_get('include_path') . PATH_SEPARATOR . $lib); ?>
どちらの方法でも動作はしますが、どちらがより良いか考えてみました。
記述方法
それぞれの利点・欠点を挙げてみました。
設定ファイル | PHPソース | |
---|---|---|
良い点 |
・設定項目がまとまっているので把握しやすい。 ・ソースと設定を分離できる。 |
・動的に記述できる。 ・環境に依存せず動作する。 |
いまいちな点 |
・固定値しか設定できない。(動的に変更できない。) ・影響範囲が大きいので局所的な設定には不向き。 ・httpd.conf/.htaccessの設定はCLI環境では反映されない。 |
・他のソースから読み込まれると影響範囲が把握し辛い。 ・ソース内に混在する。 |
どちらにも一長一短があります。
記述場所
各記述場所は以下のとおりです。並びは設定の影響範囲順になっています。(下にいくほど影響範囲が狭くなっています。)
記述方法 | 記述場所 | 要root権限 | 環境依存 |
---|---|---|---|
設定ファイル | php.ini | ○ | – |
設定ファイル | httpd.conf | ○ | – |
設定ファイル | .htaccess | – | ○ httpd.confで使用禁止になっている場合がある。 |
PHPソース | インクルードファイル 各ソースで読み込む共通ソース。 |
– | – |
PHPソース | 単一のソースファイル | – | – |
これを見るとどんな環境でも使えるのはやはりPHPソースですね※1。特にソースを配布する場合はPHPソースに記述する方が使用する側は手間がかからなくて良いです。
どちらが良いか
記述場所で考えると設定ファイルは制限があるように見えますが、私が普段携わっている案件ではphp.ini/httpd.confを(直接的にせよ間接的にせよ)触れる事がほとんどですし、もし触れない場合でも.htaccessが使えるようにしてもらえば特に問題無いかと思います。(.htaccessすら設定できない環境向けに開発する方が珍しいかと)
include_pathはJavaのclasspathと同じような感覚で捉えているので、ソースには書かず設定ファイルに書く方がしっくりきます。またmbstringやらmod_rewriteやら設定する事が多いので、それらと同じところに書いておけば設定を把握しやすいです。
実際の記述ですが、php.iniはデフォルトのまま or PEARディレクトリのみ記述。httpd.conf/.htaccessにサイト(ディレクトリ)共通設定を記述。これで基本的には終了です。CLIなどでPHPソース単体で設定が必要な場合のみソース内に記述するようにしています。
ただし上記で少し触れたようにソース配布を前提とした場合はソースに書くのもありだと思います。(もちろんその場合も共通ファイルを作成し、各スクリプトからはそれを読み込む形にした方が良いでしょう。)
※1もちろんdisable_functionsで無効になっている場合は別ですが。
- Newer: Google Code Search-ソースコード検索サイト
- Older: A4用紙を手軽に三つ折りする方法
トラックバック:0
- このエントリーのトラックバックURL
- /blog/2006/10/php_include_path.html/trackback
- Listed below are links to weblogs that reference
- include_pathかset_include_path()か from Shin x blog