質問

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;
    }
}

そうすれば、後でインクルードの方法を変更できます。もちろん、インクルード コードを含める方法を見つける必要があります:)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top