19

PHP インクルード パスを次のように設定できますphp.ini

include_path = /path/to/site/includes/

しかし、それでは他のウェブサイトが影響を受けるので、それは良くありません。

すべてのファイルの先頭に 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する内容によってインクルード パスが変わります。

より良い方法はありますか?それは問題ですか?

4

7 に答える 7

16

Apache を Web サーバーとして使用している場合は、.htaccessファイルを使用して設定をオーバーライドできます (許可されている場合)。詳細は PHP のマニュアルを参照してください。

基本的に、いくつかの PHP値を含む.htaccessというファイルを Web サイトのルートに置きます。iniオーバーライドを許可するように Apache を構成した場合、このサイトは PHP 構成のすべての値と、.htaccessファイルで指定した値を使用します。

PHP_INI_ALLおよびPHP_INI_PERDIRtype ディレクティブでのみ使用できます

私がリンクしたページに記載されているように。PHP_INI_ALL完全なリストをクリックすると、インクルード パスがディレクティブであることがわかります。

于 2008-08-23T21:43:16.687 に答える
7

Erik Van Brakel は、最高の回答の 1 つとして、IMHO に答えてくれました。

さらに、Apache と仮想ホストを使用している場合は、それらに直接インクルードを設定できます。この方法を使用すると、.htaccess に php_admin コマンドを忘れずに残す必要がなくなります。

于 2008-08-24T15:16:42.537 に答える
5

サーバー全体のphp.iniと同じ構文でPHPCGIとして使用する場合 (共有ホストで最もよくあるケース) は、Web サイトのルートにあるphp.iniファイルを使用します。PHP を Apache モジュールとして使用している場合は、次のように入力します (不明な場合は a を実行します)。.htaccessphpinfo()

php_value include_path "wherever"

フォルダーごとはサブフォルダーには影響しないことに注意しphp.ini doesください。

于 2008-09-15T20:46:25.277 に答える
3

インクルードパスに追加するのはなぜ悪い習慣だと思いますか?

ルート スクリプトの上部にあるこのコードはそれほど悪くないはずです...

$path = '/path/to/site/includes/';
set_include_path($path . PATH_SEPARATOR . get_include_path());

私見の主な利点は、Apacheだけでなく移植性と互換性があることです

編集:この方法には欠点がありました。パフォーマンスへの影響が小さいです。http://www.geeksengine.com/article/php-include-path.htmlを参照してください

于 2010-09-01T14:22:14.963 に答える
1

ホストの設定方法によってはphp.ini、追加の構成ディレクティブを使用して、ホーム ディレクトリのルートにファイルを配置することが許可される場合があります。

于 2008-08-24T14:57:55.420 に答える
1

アプリケーションには、PHP で記述された構成ファイルが必要です。次に、それを相対ページとともにプログラムのすべてのページに含めます。その構成ファイルには、インクルード dir、templates dir、images dir などへのパスの変数があります。

于 2009-04-29T17:06:28.023 に答える
0

php.ini ファイルでも設定できinclude_pathます。私は perl 派なので、インクルードをロードincludeして正しいことを実行できると期待しています。に追加される特定のディレクトリにすべてのインクルードがありinclude_pathます。私は次のようなことができます

require_once "ClassName.php";

ファイルの相対パスや場所を気にする必要はありません。

私はまた、次のCustomRequireようなことをするために自分自身を書きました

function CustomRequire ($file) {
    if(defined('MYINCLUDEPATH')) {
        require_once MYINCLUDEPATH . "/$file";
    } else {
        require_once $file;
    }
}

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

于 2008-08-23T23:11:12.890 に答える