[PHP]ファイルが動いている階層のディレクトリ名(フォルダ名)取得方法

スポンサーリンク

以下のようなURLがあるとする。

"http://example.com/123/test.html"

で、ファイル(test.html)が実行されている階層のディレクトリ名(フォルダ名)を取得したい場合、PHPコードをどう書けばよいのか?

 

答えは以下。

basename(dirname($_SERVER['SCRIPT_NAME']));

これで、「123」という返り値が取得できる。

 

ネット上で調べると以下の回答をよく見かけるけど、

basename(dirname($_SERVER['REQUEST_URI']));

これだと、

http://example.com/123/

のように、ファイル名がない時に、(123の部分を起点としてしまうので)返り値が無しになってしまうので注意が必要。

 

あと、

split("/",$_SERVER[SCRIPT_NAME]);

だと、PHP5.3以降エラーが出る(正規表現を使うので、微々たるものだけどスピードが落ちると思うし)のでおすすめしない。

 

それと、サーバーによっては上記コードでうまくいかない事もある(?)みたいなので、その時は最悪以下のコードで良いと思われ。

array_pop(explode("/",dirname($_SERVER["SCRIPT_NAME"])));

 

コメント