PHPの現在のディレクトリ取得方法を学ぼう!一目でわかる簡単解説

PHPで開発をすすめていると、PHPファイルの場所を知りたい場合もあると思います。

ftp転送をするためにディレクトリを知りたい場合などもあるでしょう。

本日はそんな悩みを解決するために以下の内容でお話をしたいと思います。

【基本】ディレクトリの基本
【実践】ディレクトリを取得
【応用】様々なパスの取得

わかりやすく解説しますので、最後まで読んで頂けると幸いです。

ディレクトリについて

まず、ディレクトリの場所を表すディレクトリパスの種類についておさらいしましょう。

表示方法は種類がありますので、自分が取得したいパスの種類を明確にしておきましょう。

絶対パス

例えばOSがWindowsの場合以下のような表示になります。

C:xampphtdocs

linux系の場合は以下のような表示になります。

/var/lib/mysql

これらは絶対パスと呼ばれるものです。

絶対パスは、最上位のディレクトリから表示したパスです。

Windowsの場合は【ドライブ名】から、Linuxの場合は【/】から始まります。

相対パス

参照している場所から見て、どこにあるのかを示すパスを相対パスと言います。

Windowsで、現在いるフォルダ(C:xampphtdocs)から、(C:xampptest.php)一つ上の階層のファイルを示す場合は以下です。

..xampptest.php

linux系で、現在いるフォルダ(/var/lib/mysql)から、(/var/lib/test.php)一つ上の階層のファイルを示す場合は以下です。

../lib/mysql

一つ上の階層は【..】で表します。

同階層の場合は【.】で表します。

フルパス

Webサーバ(Apache)などのドキュメントルートを表します。

ドキュメントルートは、Webサーバの設定によって変わります。

表示としては、絶対パスと同じで最上位のディレクトリからのパスが表示されます。

現在のディレクトリ名を取得

それでは、現在のディレクトリ名を取得する方法を解説していきます。

get_dir.phpを以下のように作成します。

<?php
$get_dir = __FILE__; // ①
echo $get_dir . "<br />";// ②
$get_dir_path =  dirname($get_dir); // ③

echo $get_dir_path; // ④

※筆者の環境はWindowsで、C:xampphtdocs配下にget_dir.phpを作成しました。

①__FILE__で、実行しているPHPファイルの、ファイル名を含めたパスを取得します。

②画面に①で取得したパスを表示させます。

③dirnameで①で取得したパスから、ファイル名だけ削除します。

④画面にパスを表示させます。

■画面表示結果

現在のディレクトリパスだけを表示させる事ができました。

他にも、getcwd関数を使う方法もあります。

get_dir.phpを以下のように変更します。

<?php
$get_dir = __FILE__; // ①
echo $get_dir . "<br />";// ②
$get_dir_path =  dirname($get_dir); // ③

echo $get_dir_path. "<br />"; // ④

echo getcwd();// ⑤

⑤getcwdの結果を画面に出力するように修正します。

■画面表示結果

④で表示している内容と同じく、現在のディレクトリパスのみ表示されている事が分かります。

色々なパスの取得

それでは最後にディレクトリのパス以外のパスを取得する方法をお話します。

ファイル名のみを取得
拡張子を外したファイル名のみ取得
相対パスから現在のディレクトリを取得

get_dir.phpを以下のように変更します。
※表示数が多くなったので、表示列に番号を振りました。

<?php
$get_dir = __FILE__; // ①
echo "②". $get_dir . "<br />";// ②
$get_dir_path =  dirname($get_dir); // ③

echo "④". $get_dir_path. "<br />"; // ④

echo "⑤". getcwd(). "<br />"; // ⑤

echo "⑥". pathinfo($get_dir, PATHINFO_BASENAME). "<br />"; // ⑥
echo "⑦". pathinfo($get_dir, PATHINFO_FILENAME). "<br />"; // ⑦

echo "⑧". dirname(realpath("./get_dir.php")). "<br />"; // ⑧
echo "⑨". realpath("./get_dir.php");// ⑨

⑥ファイル名のみを取得する場合は、pathinfo関数を使って取得します。

第一引数にパス情報、第二引数に、PATHINFO_DIRNAME、PATHINFO_BASENAME、PATHINFO_EXTENSION、PATHINFO_FILENAMEの4つのいずれかを指定します。

ファイル名のみの場合はPATHINFO_BASENAMEを第二引数に指定します。

⑦ファイル名のみを取得する場合も、pathinfo関数を使って取得します。

ファイル名のみの場合はPATHINFO_FILENAMEを第二引数に指定します。

相対パスから現在のディレクトリを取得する事も出来ます。

まず、realpath関数に相対パスを渡して全体のパスを取得します。

そしてdirname関数を使って、親の全パスを取得するのです。

⑨realpath関数で取得したパスも表示してみました。

■画面表示結果

まとめ

今回はPHPで現在のディレクトリ情報を取得できる方法を解説しました。

取得できるディレクトリ情報にも種類があります。

自分がどの情報が必要なのかを明確にして最適な方法で取得してください。

それでは、また。

LINEで送る
Pocket

ITエンジニアへ転職したい方におすすめ

自分を評価してくれる企業に転職して年収を上げたい! 自分のスキルにあった独自案件を知りたい!
エンジニアは今もっとも注目されている職業の1つ。エンジニアになって年収を増やしたい方や、あなたのスキルに見合った企業へ転職したいエンジニアの方も多いですよね。

しかし、大手の転職媒体は扱う求人数が多くても、誰もが登録しているので競争率もかなり高くなっています。そのため、あなたの条件に見合った企業を見つけても転職するためには、相応の努力とスキルが必要となります。

こういった媒体では、未経験からエンジニアを目指す方やエンジニア歴2〜3年で転職を考えている方にとって、最適な転職環境とはいえません。

そこでオススメしたいのが、未経験者や若手エンジニア向けの独自案件を多く掲載している「侍ワークス」です。

侍ワークスは、独自案件を多く掲載しているだけでなく、

・応募から就業まで一貫したサポート

・就業後もアフターフォロー

といった経験の浅い方や初めてエンジニアを目指す方にも安心のフォロー体制が整っています。もちろん登録は完全無料!しかも案件を見るだけなら登録も不要です。

まずは、お気軽にどんな求人があるか見てみてください。あなたにピッタリの企業がきっと見つかりますよ! 侍ワークスの求人情報を見る

書いた人

つぶらや

つぶらや

独学PG&SE、東京在住30代女性。
誰でもプログラマーになれるがモットーで、わかりやすい記事を目指しています。