3

メインフォルダーのルートを取得するにはどうすればよいですか? たとえば、次の場所でファイルを実行します。

public_html/admin/user/etc/index.php

からのファイルをインクルードしたい

public_html/includes/user/etc/function.php

だから私はこのようなことをしたい:

include(get_first_default_folder().'includes/user/etc/function.php');

それ以外の:

include('../../../includes/user/etc/function.php');
4

3 に答える 3

3

$_SERVER['DOCUMENT_ROOT']からドキュメントルートを使用できます。

この行をindex.phpファイルに含めることができます。

          include( "{$ _ SERVER ['DOCUMENT_ROOT']} include / user / etc / function.php");

于 2012-04-15T14:31:02.407 に答える
2

私は通常、このようにこれを行います。$myDir = dirname(__FILE__);(または PHP v5.3+ で使用できます__DIR__) は、特定のファイルが存在するディレクトリ名です。これが階層内のどこにあるかはわかっているので、$myBaseDir = realpath('../../../'.$mydir)'. Realpathは、シンボリック リンクを含まずに、パスを正規バージョンに展開します。フルパスを使用すると、ファイルを含めたり検索したりするときに、わずかなスピードアップが可能になります。

を使用するのではなく、これを行う理由は$_SERVER['DOCUMENT_ROOT']、コマンド ラインからスクリプトを実行している場合、その環境変数がおそらく存在しないためです。これは Web サーバーによって設定されます。

于 2012-04-15T14:41:47.830 に答える
1

これは少し不器用なアプローチだと思いますが、私にはうまくいきます。すべてのファイルの先頭で変数を定義します$root。最初のレベルの変数は$root = './'(これは必須ではありません)、最初のサブフォルダーは$root = '../'、2 番目のサブフォルダーは$root = '../../'などです。$root常にサイトのルート フォルダーに移動します。

パスを提供する必要があるときは、次のようにしますinclude("{$root}includes/user/etc/function.php");

これにより、「そのようなインデックスまたはファイルはありません」という警告を取り除くことができたので、同じことを行うためのより良い方法が見つかるまで、これを使い続けます。

$rootまたは、フォルダー レベルごとに定数を定義して、すべてのファイルの先頭に追加する必要がないようにすることもできます。(テストしていないので、次の構文が正しいかどうかはわかりません。)代わりに、次のようにします。

  • {ROOT}includes/user/etc/function.php");` // ルート レベルのファイル
  • {SUBFOLDER_LEVEL_ONE}includes/user/etc/function.php");` // 最初のサブフォルダー レベルのファイル

定数をどこかに定義した後:

  • define("ROOT", "./");
  • define("SUBFOLDER_LEVEL_ONE", "../");
于 2012-04-15T13:26:14.460 に答える