web-dev-qa-db-ja.com

.htaccessでPHPのinclude_pathにパスを追加する方法

現在私のサイトでは、次のようなステートメントを使用しています。

include 'head.php';
include '../head.php';
include '../../head.php';

ネストされたフォルダの深さによって異なります。これを行うためのより良い方法があると確信しています。

.htaccessが解決策であると確信していますが、それを実装する方法がわかりません。挿入した場合:

php_value include_path "public/html/root"

...残りのパス(/usr/lib/phpなど)を失います。私は単純に試しました:

php_value include_path $include_path . "(path)"

もちろん、これはうまくいきませんでした。このリストに単一のパスを.htaccessで付加または追加するにはどうすればよいですか?

31
zildjohn01

編集できない場合はphp.iniファイル自体、追加できます

set_include_path(get_include_path() . PATH_SEPARATOR . $path_to_add);

includeステートメントの前。

ただし、includeまたはrequireの問題が発生した場合は、コードのにおいがしている可能性があります。最良の解決策は、優れた__autoload 関数。

23
Otterfan

サブサブディレクトリに、内容を含むファイル_.htaccess_を作成します

_php_value include_path '../../includes'
_

または、そのディレクトリに適切な_include_path_は何でもかまいません。

利点:

  1. 深さが異なる複数のインクルードによる醜いハックはありません。ちょうど_include 'head.php'_です。
  2. _php.ini_の編集に依存しません。
  3. 含める前にset_include_path()を使用する必要はありません。
  4. _include INCLUDE_PATH . 'head.php'_のような定数を含めることに依存しません。

支払う価格:

サブサブディレクトリをファイル_.htaccess_で散らかします。

28
nalply