У меня есть рекурсивный итератор каталогов, который выглядит так:
function ReadFolderDirectory($dir,$listDir= array())
{
$listDir = array();
if($handler = opendir($dir))
{
while (($sub = readdir($handler)) !== FALSE)
{
if ($sub != "." && $sub != ".." && $sub != "Thumb.db")
{
if(is_file($dir."/".$sub))
{
$listDir[] = $sub;
}elseif(is_dir($dir."/".$sub))
{
$listDir[$sub] = ReadFolderDirectory($dir."/".$sub);
}
}
}
closedir($handler);
}
return $listDir;
}
И я использую это так
$path = dirname(__FILE__);
$path = $path.'/uploadedImages/';
$dir = new DirectoryIterator($path);
$filesArray = ReadFolderDirectory($dir);
echo json_encode($filesArray);
Теперь, когда я пытаюсь установить начальную точку итерации каталога, как вы видите, я добавил / uploadedImages / к пути, но, похоже, это не учитывается.
Независимо от того, существует он или нет, он всегда начинается с того же каталога, в котором находится файл php, включая, таким образом, также index.php, ._index, php и, конечно же, список самой загруженной папки.
Есть мысли, что мне не хватает?
В вашем коде есть ошибка, вы просто должны удалить эту строку кода:
$dir = new DirectoryIterator($path);
объяснение
opendir(String $pathToDir) // expects a String, but you pass an Object as a parameter
Других решений пока нет …