それぞれのサイトの処理はほとんど同じなのですが、requreで読み込まれる処理とDBの参照先を変えることで異なるサービスを実現しようとしています。
そこで質問ですが、これを実現するために、それぞれのサイトのrequireの参照先を変えたいのですが、うまくいきません。
PHP.iniのinclude_pathでは共通設定なのでそれぞれのサイトの参照先を変えることができませんし、それぞれのサイトのディレクトリ配下に.htaccessを設置してもrequireの指定ファイルを読み込むことができませんでした。
方法について、みなさんのお知恵をお借りしたいと思いますので、よろしくお願いいたします。
回答者2です。以下は apache + mod_php (サーバーモジュール)前提ですが
1. php.ini は httpd の起動時に1回だけ読み込まれるそうなので、スクリプトの実行毎に独立指定というのは仕様上無理ではないかと思います。
http://www.php.net/manual/ja/configuration.file.php
2. .htaccess であればスクリプトの実行毎での指定が可能だそうなので、こちらがご希望に沿う話だと思います。
http://www.php.net/manual/ja/configuration.file.per-user.php
http://www.php.net/manual/ja/configuration.changes.php
3. 手元の Linux マシン(Debian lenny + apache2 + PHP5)で試してみたところでは 2 でご希望の動作をしていることが確認できました。
具体的には各ディレクトリ直下の index.php の中身を echo phoinfo() とし、.htaccess には php_value include_path ... を記載して
http://.../a/index.php や http://.../b/index.php の表示をチェックしましたところ Local Value が .htaccess での指定に変更されていました。
4. ということで、cochoo さんのお手元でうまくいかない理由は残念ながらわからないのですが
あたりを念のため再チェックしてみてはいかがでしょうか。
以下のような記述を.htaccessに記述したのでしょうか?
http://www.iyahooi.com/entry/2008/04/htaccessphp.html
「set_include_path()」でPHPファイルに記述するのはいかがでしょうか?
http://kezy.org/2009/07/19/php-include-path
サイト1には
$path = /home/user/www/lib1/"; set_include_path($path . PATH_SEPARATOR . get_include_path());
サイト2には
$path = /home/user/www/lib2/"; set_include_path($path . PATH_SEPARATOR . get_include_path());
・・・のように記述すれば大丈夫ではないかと思います。
※どちらも優先順位は、記述した順番になります。
※カレントディレクトリが一番優先されますので、読み込むファイルはカレントディレクトリ以外のディレクトリに置く必要があります。
※コメント欄を開けて置いた方がやり取りがしやすいと思います。
.htaccessとphp.iniの両方が動作したようですので、モジュール版のようですが、今後は、ローカルなのかレンタルサーバーなのか等、出来るだけ詳細な環境を明記する方が良いと思います。