1. ホーム
  2. php

実行中のスクリプトの親ディレクトリを取得する

2023-09-09 07:51:59

質問

PHP で、最もクリーンな方法は何でしょうか? ディレクトリを取得する最もきれいな方法は何でしょうか?私が持っていると仮定します。

$_SERVER['SCRIPT_NAME'] == '/relative/path/to/script/index.php'

あるいはただ

$something_else == '/relative/path/to/script/'

そして、私は /relative/path/to/ をスラッシュが適切に挿入された状態で取得する必要があります。何かいい方法はないでしょうか?ワンライナーが望ましいです。

EDIT

wwwのルートからの相対パスを取得したいのですが。 dirname(__FILE__) は私にファイルシステム内の絶対パスを与えるので、それは動作しません。 $_SERVER['SCRIPT_NAME'] はwwwのルートで'開始'します。

どのように解決するのですか?

スクリプトが /var/www/dir/index.php にある場合、次のように返されます。

dirname(__FILE__); // /var/www/dir

または

dirname( dirname(__FILE__) ); // /var/www


編集

これは、app_rootから相対パスを決定するために多くのフレームワークで使用されているテクニックです。

ファイルの構造です。

 /var/
      www/
          index.php
          サブディレクトリ
                 library.php

index.phpは私のディスパッチャ/ブーストラップファイルで、すべてのリクエストはここにルーティングされます。

define(ROOT_PATH, dirname(__FILE__) ); // /var/www

library.phpは特別なディレクトリにあるファイルで、アプリのルート(/var/www/)からの相対パスを決定する必要があります。

$path_current = dirname( __FILE__ ); // /var/www/subdir
$path_relative = str_replace(ROOT_PATH, '', $path_current); // /subdir

相対パスを計算するためのもっと良い方法があるはずです。 str_replace() を使用した方が良い方法があるかもしれませんが、アイデアを得ることができます。