スライドショースライドショー

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

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

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

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

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

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

ディレクトリについて

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

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

絶対パス

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

C:\xampp\htdocs

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

/var/lib/mysql

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

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

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

相対パス

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

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

..\xampp\test.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:\xampp\htdocs配下に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

無料でSEからWebエンジニアへ転職しませんか?



侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、

  • システムエンジニアという職業だけどコードが書けない
  • 事務作業が多くスキルがないため将来が不安
  • スクールに通うと完全未経験者と同じスタートになるからレベルが合わない
という、すでに知識があるSEならではのお悩みがあることに気づきました。そんな方におすすめなのが、弊社の「転職コース 」です。

弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。さらにこちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。

既に知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。

まずは無料体験レッスンを予約する

書いた人

つぶらや

つぶらや

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

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説