Могу предложить альтернативное решение через итераторы:
function iterateDirectory($i)
{
/** @var SplFileInfo $path */
foreach ($i as $path) {
if ($path->getBasename() === '..') {
continue;
}
if ($path->isDir())
{
echo $path->getPath() . '<br>';
iterateDirectory($path);
}
else
{
echo $path->getPathname() . '</br>';
}
}
}
$dir = '/var/log';
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir));
iterateDirectory($iterator);
В дальнейшем будет проще дорабатывать фильтрацию и учитывать особенности (например, симлинки)