2012-04-15 38 views
2

どのように私はメインフォルダにルートを得ることができますか?私はこのような何かをしたいphpファイルのルートを取得

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'); 
+0

include_pathに/ path/to/public_htmlを追加するか、ブートストラップにパスを指定してPUBLIC_HTML定数を作成してください。 – Gordon

+0

、おそらく$ root = 'public_html';多くのアプリはルートインストールディレクトリを知る必要があります。 –

答えて

1

これはちょっと不器用なアプローチですそれは私のために働く。すべてのファイルの最初に、変数$rootを定義します。第1レベルの変数は$root = './'(これは考慮する必要はありません)、最初のサブフォルダは$root = '../'、2番目のサブフォルダは$root = '../../'などです。 $rootは常に自分のサイトのルートフォルダに移動します。

私はちょうどinclude("{$root}includes/user/etc/function.php");

このようなものは、私はより良い方法を見つけるまで、私はそれに固執ますので、「いいえ、そのようなインデックスやファイル」の警告を取り除くために私を助けてくれないのパスを提供する必要があります同じことをやっている。

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

  • {ROOT} /ユーザーの/ etc/function.php」)を含む; `を定義

    • ( `//最初のサブフォルダレベルファイル

    どこかの定数を定義したら、

  • {SUBFOLDER_LEVEL_ONE}含ま/ユーザの/ etc/function.php")//ルートレベルファイル"ROOT"、 "./");
  • define( "SUBFOLDER_LEVEL_ONE"、 "../");
2

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

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

 

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

+0

@Morこれは、localhostと本番サーバーで異なる結果をもたらします。私のプロダクションサーバは '/ var/www/virtual/{sitename}/www'、ローカルホストは'/Users/{username}/Documents/www'に応答します。これはテストとアップグレードの目的でサイトのファイルに同一のコピーを保存しているため、私には受け入れられません。 –

+0

@ ZZ-bb私はちょうどこの問題に直面しています、私にそれを知らせてくれてありがとう!どうすればlocalhostサーバーで同じことができますか? –

+0

@モール私の答えを見てください。私はファイルの先頭にすべてのファイルのサブレベルを定義し、include( "{$ root} includes/user/etc/function.php")のように 'include'を使います。わずかな余分な手作業の単一の利点すべてのサーバーで同じように動作します... –

2

これは通常通りです。 $myDir = dirname(__FILE__);(またはPHP v5.3 +で__DIR__を使用できます)は、特定のファイルが入っているディレクトリ名です。これは階層内のどこにあるのか分かりますので、$myBaseDir = realpath('../../../'.$mydir) 'で簡単にベースを取得できます。 Realpathは、シンボリックリンクを含まない正規バージョンのパスを展開します。完全なパスを持つことで、ファイルのインクルードやファイルの検索に要する時間を短縮できます。

$_SERVER['DOCUMENT_ROOT']を使用するのではなく、コマンドラインからスクリプトを実行していると環境変数が存在しない可能性があります。これはウェブサーバーによって設定されています。

関連する問題