foreach (new RecursiveIteratorIterator (new RecursiveDirectoryIterator ('.')) as $x)
{
echo $x->getPathname (), "\n";
}
Обновление № 1:
Если вы хотите, чтобы пустые каталоги также были перечислены, используйте RecursiveIteratorIterator :: CHILD_FIRST
foreach (new RecursiveIteratorIterator (new RecursiveDirectoryIterator ('.'), RecursiveIteratorIterator::CHILD_FIRST) as $x)
{
echo $x->getPathname (), "\n";
}