PHP - よく使う関数 - ファイルシステム - ディレクトリ・パス


 クラウディア


1. 概要
2. dirname 親ディレクトリのパスを返す
3. chdir カレントディレクトリを変更する
4. glob パターンにマッチするパス名を探す
5. basename パスの最後にある名前の部分を返す
6. 参考サイト

1. 概要

 本ページでは、ディレクトリやパスに関連する関数についてメモします。

2. dirname 親ディレクトリのパスを返す

 詳細は、参考サイトを読んでいただくとして。

<?php

$filename = __FILE__;

print('$filename = '."[$filename] \n");
print('dirname   = ['.dirname($filename)."] \n");
 というソースを書いて実行すると下記の結果が得られます。

$filename = [/home/hogehoge/lang/php/file/dirname.php]
dirname   = [/home/hogehoge/lang/php/file]

3. chdir カレントディレクトリを変更する

 「composer(「php - composer(パッケージ管理)」)」で管理しているライブラリがウェブサーバのドキュメントディレクトリやシステムライブラリで定義しているディレクトリと異なるときに便利です。  「require」でインクルードさせるのに相対ディレクトリで書いていても、「dirname」と「chdir」を組み合わせることで柔軟に対応できます。

<?php
$directory = dirname(__FILE__);
chdir($directory);

require './chdirsub.php';

chdirsub();
 上記のソースと下記のソース(ファイル名が chdirsub.php)を同一のディレクトリに置いて

<?php
function chdirsub() : void
{
	print("[".__FUNCTION__."][".__LINE__."]\n");
}
 実行すると下記の結果が得られます。

[chdirsub][4]

4. glob パターンにマッチするパス名を探す

 詳細は、末尾の参考サイトをご参照ください。

glob(string $pattern, int $flags = 0): array | false
 「$pattern」の部分を、「'パス/*.*'」と書けば、「パス」内に存在するファイルをリストすることができます。

5. basename パスの最後にある名前の部分を返す

 詳細は、末尾の参考サイトをご参照ください。

basename(string $path, string $suffix = ""): string

/usr/bin/basename
 と同じ動きをすると思って、問題ありません。

<?php

print(basename('/usr/local/etc/php.ini'));
 を実行すると、下記の結果が得られます。

php.ini

6. 参考サイト

 本ページは、下記のサイトを参考にさせていただきました。
PHP・ファイル名・パスなどの取得」
「PHP: dirname - Manual」
「PHP: glob - Manual」
「PHP: basename - Manual

AbemaTV 無料体験