質問
PHP インクルード パスを設定できます。 php.ini
:
include_path = /path/to/site/includes/
しかし、そうすると他のWebサイトにも影響が出るのでダメです。
すべてのファイルの先頭に PHP インクルードを設定できます。
$path = '/path/to/site/includes/';
set_include_path(get_include_path() . PATH_SEPARATOR . $path);
しかし、それは悪い習慣であり、物事が乱雑になるようです。
したがって、それをインクルードして、すべてのファイルに含めることができます。
include 'includes/config.php';
または
include '../includes/config.php';
これは私が今やっていることですが、 config.php
何が含まれているかによって変わります。
もっと良い方法はありますか?関係ありますか?
解決
Apache を Web サーバーとして使用している場合は、(許可している場合) を使用して設定をオーバーライドできます。 .htaccess ファイル。見る PHPマニュアル 詳細については。
基本的に、というファイルを置きます .htaccess Web サイトのルート (PHP が含まれている) ini
価値観。オーバーライドを許可するように Apache を設定している場合、このサイトは PHP 設定内のすべての値と、 .htaccess ファイル。
とのみ使用できます
PHP_INI_ALL
そしてPHP_INI_PERDIR
型ディレクティブ
リンクしたページに記載されているとおりです。クリックして完全なリストを表示すると、インクルード パスが PHP_INI_ALL
指令。
他のヒント
Erik Van Brakel 氏は、私見ですが、最良の回答の 1 つを提供してくれました。
さらに、Apache および仮想ホストを使用している場合は、それらに直接インクルードを設定できます。この方法を使用すると、.htaccess に php_admin コマンドを忘れずに残す必要がなくなります。
使う php.ini ウェブサイト内のファイル 根, 、セットアップで使用している場合 PHP として CGI (共有ホストで最も頻繁に起こるケース) サーバー全体と同じ構文を使用 php.ini;それを入れてください .htaccess
PHP を Apache モジュールとして使用している場合 (次のようにします) phpinfo()
不明な場合):
php_value include_path "wherever"
フォルダーごとに注意してください php.ini does
影響しない サブフォルダー.
パスを追加するのはなぜ悪い習慣だと思いますか?
ルート スクリプトの先頭付近にあるこのコードは、それほど悪くないはずです...
$path = '/path/to/site/includes/';
set_include_path($path . PATH_SEPARATOR . get_include_path());
私の主な利点は、ポータブルであり、Apache だけでなく互換性があることです
編集:この方法には次のような欠点がありました。パフォーマンスへの影響は小さい。見る http://www.geeksengine.com/article/php-include-path.html
ホストの設定方法によっては、 php.ini
ホームディレクトリのルートにあるファイルに追加の設定ディレクティブを追加します。
アプリケーションには PHP で書かれた構成ファイルが必要です。次に、それを相対ページとともにプログラム内のすべてのページに組み込みます。その構成ファイルには、インクルード ディレクトリ、テンプレート ディレクトリ、イメージ ディレクトリなどへのパスの変数が含まれます。
設定できます include_path
php.ini ファイルにもあります。私は Perl 派なので、インクルードをロードできることを期待しています。 include
正しいことをします。すべてのインクルードは特定のディレクトリにあります。 include_path
. 。次のようなことができます
require_once "ClassName.php";
ファイルの相対パスや場所を気にする必要はありません。
私も自分で書いたことがあります CustomRequire
のようなことをする
function CustomRequire ($file) {
if(defined('MYINCLUDEPATH')) {
require_once MYINCLUDEPATH . "/$file";
} else {
require_once $file;
}
}
そうすれば、後でインクルードの方法を変更できます。もちろん、インクルード コードを含める方法を見つける必要があります:)