[PHP-users 1361] Re: include_path

Yasuo Ohgaki php-users@php.gr.jp
Wed, 22 Aug 2001 11:22:21 +0900


大垣です。

> 石井です.
>
> > くわむら@Plamoパッケージング中です。
> >
> >    石井さんの pgimage-2.2 の .htaccess というファイルで
> > --
> > <IfModule mod_php4.c>
> > php_value include_path ".:./lib:./phplib"
> > </IfModule>
> > --
> > という記述でオーバーライドをしているのですが、PHP4を Apache モジ
> > ュールで動作させているときに、これが有効となる条件はhttpd.conf
> > の中で、
> > --
> > <Directory /hoge/hoge/*/public_html>
> >      AllowOverride Options
> > </Directory>
> > --
> > とする以外に他にもありますか?
>
> これはいろいろ実験したり,ソースを見たりした結果(ちゃんとしたドキュ
メ
> ントがない) include_pathを有効に
> するための「ミニマム」であろうと思われるセッティングです.これ以外だ
と,
> All にするしか方法がないような気がします.

今までの経緯を把握していないので、外している・回答済みかもしれません
が、Apache/PHPでinclude_pathを設定する方法には

1) php.iniのinclude_path
2) httpd.conf (Virtual Host単位で設定可)
3) .htaccess
4) PHPスクリプトから変更 (int_set)

の4つしかないと思います。サーバーの設定によっては3、4の方法は使えませ
ん。

多分、各ユーザーに独自のインクルードパスを設定したいということと思いま
す。個人的には

define ('INCLUDE_PATH', '/home/user/foo/php_include/');
include(INCLUDE_PATH.'file_to_include.php');

等として利用してもらうのが良いと思います。私は移植性も高くなるので、い
つもこのようにしてインクルードしています。

もし、各ユーザーがインクルードパスを.htaccess・PHPスクリプトで設定する
事は好ましくない場合、auto_prepend、ini_setを使って、各ユーザー毎にイ
ンクルードパスを設定してしまう、と言う方法も考えられます。

# リクエストされたスクリプトのパス情報からユーザーを判別して
# 個別のインクルードパスを設定。

ユーザーが少ないのであれば、http.confでVirtual Host単位にinclude_path
を設定するのが一番簡単と思います。

--
Ohgaki, Yasuo (大垣 靖男) 
Mail: yohgaki@dd.iij4u.or.jp