Рекурсивное чтение папки на сервере и вывод списка файлов

Иногда необходимо просто прочитать папку и получить находящие в ней документы либо другие подпапки, при это сформировать структуру дерева в виде списка.

Данная функция поможет сделать список файлов в виде li набора, если элементом набора будет файл то укажим ссылку на него, если просто каталог выделим его ввиде заголовка

function listFolderFiles($folder,$subDir='', $recursion = ''){
	$dir	=	($recursion != '') ? $folder : $_SERVER['DOCUMENT_ROOT'].$folder;
	$f		=	$folder;
    $ffs	=	scandir($dir);
    unset($ffs[array_search('.', $ffs, true)]);
    unset($ffs[array_search('..', $ffs, true)]);

    if (count($ffs) < 1)
        return;

    foreach($ffs as $ff){
    if($subDir==''){
      echo '<li class="nav-item"><h6>'.$ff.'</h6>';  
    }else{
      echo '<li class="nav-item"><a href="'.$recursion.'/'.$subDir.'/'.$ff.'" class="nav-link">'.$ff.'</a>';
    }
      if(is_dir($dir.'/'.$ff)) listFolderFiles($dir.'/'.$ff,$ff, $f);
			echo '</li>';
    }   
}