0

定義がサブディレクトリにあるときに実際の (完全な) ルートパスを取得する信頼できる方法は? 検討:

E:\web\sites\name\index.php
E:\web\sites\name\res\defines.php
E:\web\sites \name\res\another.php E:\web
\sites\name\classes \class-example.php

E:\web\localhostはどこE:\web\sites\nameにあり、サイトの意図されたルートです。

E:\web\sites\name\data\feature\file.txt=を次のように定義するパスの例$file = ROOTPATH."\data\feature\file.txt";

相対パスを使用しない理由は、同じターゲットに対して 2 つの定数を使用せずclasses\class-example.phpにパスを渡したいからです。res\another.php

では、res\defines.php で、rootpath を指すようにするにはどうすればよいE:\web\sites\name\でしょうか? Web サイトがサーバー上にある場合、同じ ROOTPATH がhttp://www.example.com/

define.php が にあるときに得られるものは次のとおりですres\defines.php

// Outputs: E:\web\sites\name\res
echo __DIR__;

// Outputs: E:\web\sites\name\res
echo realpath(__DIR__);

// Outputs: sites\name\res\another.php
echo $_SERVER['REQUEST_URI']

// Outputs: E:\web
echo $_SERVER['DOCUMENT_ROOT'];

// Outputs: sites\name\res\another.php
echo $_SERVER['SCRIPT_NAME'];

// Outputs: E:\web\sites\name\res\defines.php
echo __FILE__;

// Outputs: sites\name\res\another.php
echo $_SERVER['PHP_SELF'];
4

1 に答える 1

0

秘訣は、dirname(__DIR__)(PHP >= 5.3.0) を使用することです。

// Outputs: E:\web\sites\name
echo dirname(__DIR__);

これに少し似た質問があることに注意してくださいdirname(__DIR__)。彼らはすべて、バージョン出力と同じものを出力dirname(__FILE__)ないことだけを述べましたdirname(__DIR__)__FILE__E:\web\sites\name\res

この情報が、サブディレクトリに関する同様の問題を抱えている他の人に役立つことを願っています:)

誰かがそれを使用している場合に備えて、誰かが古いPHPバージョンの解決策を持っているかどうかを聞くのは興味深いでしょう...

于 2013-03-21T18:13:25.617 に答える