<?php
function removeEmptyFolders($path) {
$isFolderEmpty = true;
if (substr($path, -1) == '/') {
$pathForGlob = $path.'*';
} else {
$pathForGlob = $path.'/*';
}
foreach (glob($pathForGlob) as $file) {
if (is_dir($file)) {
if (!removeEmptyFolders($file)) {
$isFolderEmpty = false;
}
} else {
$isFolderEmpty = false;
}
}
if ($isFolderEmpty) {
echo $path.'<br />';
rmdir($path);
}
return $isFolderEmpty;
}
removeEmptyFolders($_SERVER['DOCUMENT_ROOT'].'/');Як знайти та видалити всі порожні папки на PHP?
Виникла необхідність (через ліміт інодів на хостингу) видалити всі порожні директорії на сайті. Підкажіть як це зробити на PHP?
2 відповіді
-
ОлегОсь функція, яка рекурсивно перевіряє наявність файлів у директоріях і видаляє їх у випадку, якщо файли не знайдені. Також буде виведений список таких папок.
-
ІгорЯ використовую трішки іншу функцію:
function removeEmptyDirs($dir) {
// Перевіряємо, чи $dir — це дійсна директорія
if (!is_dir($dir)) return;
// Отримуємо список усіх елементів в директорії
$files = scandir($dir);
foreach ($files as $file) {
// Пропускаємо "." та ".."
if ($file === '.' || $file === '..') continue;
$fullPath = $dir.DIRECTORY_SEPARATOR.$file;
// Якщо це папка — викликаємо функцію рекурсивно
if (is_dir($fullPath)) {
removeEmptyDirs($fullPath);
}
}
// Після рекурсивного видалення перевіряємо, чи директорія порожня
$files = array_diff(scandir($dir), ['.', '..']);
if (empty($files)) {
rmdir($dir);
echo "Видалено порожню директорію: $dir\n";
}
}
removeEmptyDirs($_SERVER['DOCUMENT_ROOT'].'/uploads');
|
|