私は通常、この目的のために次のような単純で愚かな方法を使用します。
ユーザーがアプリケーションのさまざまなエントリ ポイントから非決定論的にアクセスできる場合、エントリ ポイントは、アプリケーション ルートに対して相対的に「どこにいるのか」を認識している必要があります。
まず、現在のスクリプト wr アプリケーション ルートの相対位置を知る必要があるため、スクリプトに静的に書き込みます。にあるはずのスクリプトの場合
...approotdirname/appsubdir1name/appsubdir2name/here.php
.
$relPath = 'approotdirname/appsubdir1name/appsubdir2name';
- スクリプトがアプリケーション ルートにある場合、以下で計算される $curPath は、サーバー上のアプリケーションの位置になります。
次に、Php から現在のスクリプト ファイル パスを統一形式で取得する必要があります。
$curPath = str_replace('\\','/',dirname(__FILE__));
(str_replace は、存在する場合に \ を / に置き換えるためのものです。) 実際には、$relPath のコピーが (正しく計算されていれば) $curPath の最後に存在するはずです。
次に、$curPath で $relPath の位置を見つけます。
$p = stripos($curPath, $relPath, 0);
if(($p === false)||($p < 0)){echo "Relative path: $relPath is invalid."; exit(0);}
ここで、$curPath から $relPath を差し引くと、サーバー上のアプリケーション ルートがどこにあるのかを少し確認することで取得できます。
$rootPath = ($p > 0)? substr($curPath, 0, $p-1): '/';
これが役立つことを願っています。
アプリケーション ルートの index.php のような単一のポイントを介してユーザー アクセスを制限することは、一般的により良い方法として受け入れられていることに注意してください。あなたが得ることができる入り口にあります
$rootPath = str_replace('\\','/',dirname(__FILE__)).'/';
ファイルアクセスとインクルードのために、アプリケーション全体で使用します。おまけとして、ファイルの関係を壊さずにアプリケーション全体を移動できます。