[PHP-ファイルシステム] 指定したディレクトリのファイル情報の一覧を取得する
指定したディレクトリ内にあるファイルの名前、更新日、アクセス権、所有者についての情報を一覧で取得し、表示するためのサンプルソースです。
出力結果は、視覚的に見やすいようにテーブル表示しています。
■サンプルソース
<? $target_dir = "./"; // 一覧を取得する対象のディレクトリ // ディレクトリリスト部のHTMLソース作成 echo "\n"; echo "<table border='1'>\n"; echo "<tr>\n"; echo "<th width='220' title='サーバー上でのファイル名'>ファイル名</th>\n"; echo "<th width='110' title='ファイル更新された日時'>最終更新日</th>\n"; echo "<th width='110' title='ファイルのアクセス権限'>アクセス権</th>\n"; echo "<th width='110' title='ファイルの所有権を持つユーザー名'>ファイル所有者</th>\n"; echo "</tr>\n"; // カレントディレクトリの一覧を取得 if ($handle = opendir($target_dir)) { // '0'というディレクトリ名があった場合ループが止まってしまうため、型で厳密に比較 // PHP 4.0.0-RC2 より以前のバージョンでは !== は存在しない事に注意 while (false !== ($file = readdir($handle))) { // is_dir関数をis_dir関数に置き換えでディレクトリ一覧を出力 // if文を取り除くとファイル・ディレクトリの両方を出力します if (is_file($target_dir . $file)) { echo "<tr>\n"; // --------------- // ファイル名 // --------------- echo "<td>" . $file . "</td>\n"; // --------------- // 更新日 // --------------- echo "<td>" . date("Y-m-d H:i", filemtime($target_dir . $file)) . "</td>\n"; // --------------- // パーミッション // --------------- $perms = fileperms($target_dir . $file); // このサンプルソースで実際に通過するのは、「通常のファイル」のみです。 if (($perms & 0xC000) == 0xC000) { // ソケット $info = 's'; } elseif (($perms & 0xA000) == 0xA000) { // シンボリックリンク $info = 'l'; } elseif (($perms & 0x8000) == 0x8000) { // 通常のファイル $info = '-'; } elseif (($perms & 0x6000) == 0x6000) { // ブロックスペシャルファイル $info = 'b'; } elseif (($perms & 0x4000) == 0x4000) { // ディレクトリ $info = 'd'; } elseif (($perms & 0x2000) == 0x2000) { // キャラクタスペシャルファイル $info = 'c'; } elseif (($perms & 0x1000) == 0x1000) { // FIFO パイプ $info = 'p'; } else { // 不明 $info = 'u'; } // 所有者 $info .= (($perms & 0x0100) ? 'r' : '-'); $info .= (($perms & 0x0080) ? 'w' : '-'); $info .= (($perms & 0x0040) ? (($perms & 0x0800) ? 's' : 'x' ) : (($perms & 0x0800) ? 'S' : '-')); // グループ $info .= (($perms & 0x0020) ? 'r' : '-'); $info .= (($perms & 0x0010) ? 'w' : '-'); $info .= (($perms & 0x0008) ? (($perms & 0x0400) ? 's' : 'x' ) : (($perms & 0x0400) ? 'S' : '-')); // 全体 $info .= (($perms & 0x0004) ? 'r' : '-'); $info .= (($perms & 0x0002) ? 'w' : '-'); $info .= (($perms & 0x0001) ? (($perms & 0x0200) ? 't' : 'x' ) : (($perms & 0x0200) ? 'T' : '-')); echo "<td>" . $info . "</td>\n"; // --------------- // 所有者 // --------------- $owner = posix_getpwuid(fileowner($target_dir . $file)); echo "<td>" . $owner['gecos'] . "</td>"; } } // ディレクトリハンドルを閉じる closedir($handle); } echo "</table>\n"; ?>
■サンプルソースで使った特記するべき関数
opendir関数 - ディレクトリハンドルをオープンする readdir関数 - ディレクトリハンドルからエントリを読み込む closedir関数 - ディレクトリハンドルをクローズする is_file関数 - 通常ファイルかどうかを調べる filemtime関数 - ファイルの更新時刻を取得する fileperms関数 - ファイルのパーミッションを取得する fileowner関数 - ファイルの所有者を取得する posix_getpwuid関数 - 指定 ID のユーザに関する情報を返す
「PHP プログラミング」に関する「本」の商品を自動的に表示しています。
キーワードに関連していない商品は、Amazonがオススメする商品です。気になる物があればどうぞ。
キーワードに関連していない商品は、Amazonがオススメする商品です。気になる物があればどうぞ。
作成日:2008年06月09日(Mon)