Php как удалить файл .idea

Как посредством php команды с текущей директории удалить НЕ пустую папку .idea ? Мой код выглядит так.

<?php
$directory = __DIR__; // Текущая директория

// Проверяем, есть ли права на запись в директорию
if (is_writable($directory)) {
    $ideaDirectory = $directory . '/.idea';

    // Проверяем существование и тип (.idea - директория) перед удалением
    if (is_dir($ideaDirectory)) {
        // Удаляем все файлы внутри .idea
        $files = glob($ideaDirectory . '/*');
        foreach ($files as $file) {
            if (is_file($file)) {
                unlink($file);
            } elseif (is_dir($file)) {
                rmdir_recursive($file);
            }
        }

        // Удаляем саму директорию .idea
        if (rmdir($ideaDirectory)) {
            echo "Директория $ideaDirectory успешно удалена.<br>";
        } else {
            echo "Ошибка при удалении директории $ideaDirectory.<br>";
        }
    } else {
        echo "Директория $ideaDirectory не существует или не является директорией.<br>";
    }

    echo "Операция завершена.";
} else {
    echo "Нет прав на запись в текущей директории.";
}

Но он не срабатывает. Почему ?


Ответы (1 шт):

Автор решения: Алексей Шиманский
$files = new RecursiveIteratorIterator(
    new RecursiveDirectoryIterator($dir, RecursiveDirectoryIterator::SKIP_DOTS),
    RecursiveIteratorIterator::CHILD_FIRST
);

foreach ($files as $fileinfo) {
    $todo = ($fileinfo->isDir() ? 'rmdir' : 'unlink');
    $todo($fileinfo->getRealPath());
}

rmdir($dir);

Для линуксов мне кажется было бы проще так:

shell_exec('rm -r  ПУТЬ/ДО/ДИРЕКТОРИИ') 
→ Ссылка