📌

PHPの便利な関数:ファイルパス関連dirname(), basename(), realpath(), getcwd(), chdir()

2023/04/24に公開

dirname():ディレクトリのパスを取得したい!

パス(フルパス・相対パス)から、ファイル名を除いてくれます。

$path = '/var/www/htdocs/index.php';
$dir  = dirname($path);
echo $dir; // /var/www/htdocs

実行しているファイルのパスは、__DIR__で取得できる

ちなみに、現在、実行中のファイルのパスは、__DIR__で取得できます!

echo __DIR__;

basename()

パス(フルパス・相対パス)から、ファイル名だけを返してくれます。

$path = '/var/www/htdocs/index.php';
echo basename($path); // index.php

basename()で拡張子を取り除く!

basename()の第二引数には、末尾から取り除きたい文字列を指定することができます!

echo basename('test.php', '.php'); // test

realpath():相対パスを絶対パスに変換する!

相対パスをフルパスに変換できます。

echo realpath('./index.php'); // /var/www/htdocs/index.php

getcwd():カレント・ディレクトリーを取得する!

カレント・ディレクトリーとは、現在のディレクトリーのことです。(カレント=現在)
getcwd()は、現在のディレクトリーを取得できます。
__DIR__との違いは、__DIR__は、実行中のファイルのディレクトリーのパスです。
違いが出るのは、include('../lib/db.php');のように、現在、実行中のファイルとは異なるディレクトリーにあるファイルから__DIR__すると、結果が違います。

そもそもカレント・ディレクトリーは、URLと一緒では?

変更しなければ一緒です!
chdir()という、カレント・ディレクトリーを変更できる関数があるんです!!

chdir():カレント・ディレクトリーを変更する

カレント・ディレクトリーを変更できます。

chdir('/tmp/');

どんな時にカレント・ディレクトリーを変更するの?

フレームワークの作成者が使います。
ユーザーが利用することは基本的にありませんし、使わない方が良いです。ただ、知識として知っておくと良いと思います。

Discussion