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」