Для PHP , если вы работаете в linux / unix, вы также можете использовать backticks (выполнение оболочки) с командой unix find
. Поиск в каталоге в файловой системе может занять много времени и зацикливаться - команда system find
уже создана для скорости и обработки циклов файловой системы. Другими словами, системный вызов exec, вероятно, будет стоить гораздо меньше времени процессора, чем использование самого PHP для поиска в дереве файловой системы.
$dirs = `find $path -type d`;
Не забудьте очистить ввод $ path, чтобы другие пользователи не передавали имена путей, компрометирующих безопасность (например, из URL или чего-то еще).
Поместить его в массив
$dirs = preg_split("/\s*\n+\s*/",`find $path -type d`,-1,PREG_SPLIT_NO_EMPTY);