Я пытаюсь получить имена файлов, размеры и разрешения в php, используя RecursiveIteratorIterator
и RecursiveDirectoryIterator
.
Приведенный ниже код работает для правильного вывода всех файлов и имен и размеров каталогов, норазрешения неверны (используется get $file->getPerms
).
В этом случае все выводимые разрешения одинаковы, 0666
, который я подозреваю, является только первым файлом.
Также обратите внимание, что еслиЯ не использую foreach(new RecursiveIteratorIterator($it) as $file)
и вместо этого просто использую foreach($it as $file)
, он работает правильно, но он не является рекурсивным (он не показывает подкаталоги / файлы).
//remove some file types I don't want showing
$filetypes = array("jpg", "png", "css", "gif");
$it = new RecursiveDirectoryIterator("/root-directory");
foreach(new RecursiveIteratorIterator($it) as $file) {
//foreach($it as $file) {
// ^^This works but it's not recursive ?!
//remove files in $filetypes array
$filetype = pathinfo($file, PATHINFO_EXTENSION);
if (!in_array(strtolower($filetype), $filetypes)) {
//outputs file name correct
echo $file ;
//outputs wrong permissions
echo substr(sprintf('%o', $file->getPerms()), -4);
//outputs file size correct
echo number_format($file->getSize()/1024, 2) . " KB";
}
}