
globを使って再帰的にファイルリストを作成
./sample フォルダ(ディレクトリ)の中を、中のフォルダも含めて一覧にする例です。
<?php
file_list('./sample/*');
function file_list($path){
$res = glob($path);
foreach ($res as $key => $value ) {
if (is_file($value)) {
echo 'file : ' . $value . '<hr>';
} else {
echo 'dir : ' . $value . '<hr>';
file_list($value.'/*');
}
}
}
?>
実行結果

指定したフォルダの中を 1 つずつ調べ、ファイルなら表示、フォルダならその中をさらに同じ関数で調べます(再帰)。
※ glob の「*」は、名前が「.」で始まる隠しファイル(.htaccess など)を拾いません。また、ファイル名を公開の画面に出すときは、htmlspecialchars() を通してから echo してください。