11

$_SERVER["DOCUMENT_ROOT"]私は絶対パスを取得するために大きく依存しています。ただし、これは URL がルートを指していないサイトでは機能しません。

次のようなフォルダーにサイトが保存されています。

  • サイト1
  • サイト2

すべてルート内に直接。現在のサイト ルートがあるサーバーのパスを取得する方法はありますか?

次のように返されます。

   /var/chroot/home/content/02/6945202/html/site1 // If the site is stored in folder 'site1'
   /var/chroot/home/content/02/6945202/html // If the site is stored in the root
4

4 に答える 4

15

に単純に追加できdirname($_SERVER['SCRIPT_NAME'])ます$_SERVER['DOCUMENT_ROOT']

アップデート

ウェブサイトはそのフォルダにディレクトリ「マウント」されているように見えるので、SCRIPT_NAME明らかに/.

したがって、これを機能させるには、 または を使用して、スクリプトがファイル システム内のどこにある__DIR__dirname(__FILE__)を調べる必要があります。

更新 2

サイト全体に単一のindex.phpコントローラーがないため、それも機能しません。

次の式は、文字列の「減算」を実行して共通パスを見つけます。既知のプレフィックス (ドキュメント ルート)、不明 (ルート フォルダー)、および既知のサフィックス (スクリプト パス) があるため、最初の 2 つを見つけるには、完全な絶対パス ( __FILE__) を取得し、既知のサフィックスを減算します。

substr(__FILE__, 0, -strlen($_SERVER['SCRIPT_NAME']));

含まれるファイルにこの値が必要な場合は、依存スクリプトを含める前に、まずこれを定数に格納する必要があります。.

于 2012-06-07T04:08:29.740 に答える
1

将来のグーグル社員にとって、これは私にも役立ちます

substr(substr(__FILE__, strlen(realpath($_SERVER['DOCUMENT_ROOT']))), 0, - strlen(basename(__FILE__)));
于 2013-06-28T10:25:47.187 に答える