public static function rmdirRecursive($dirName)
    {
        //próba zbadania czy jest plikiem
        try {
            $isFile = is_file($dirName);
        } catch (\Exception $e) {
            return false;
        }
        //zwykły plik
        if ($isFile) {
            //próba usunięcia
            try {
                unlink($dirName);
            } catch (\Exception $e) {
                //prawdopodobnie już usunięty
                return false;
            }
            return true;
        }
        //próba otwarcia katalogu
        try {
            $directoryIterator = new \DirectoryIterator($dirName);
        } catch (\Exception $e) {
            //prawdopodobnie już usunięty
            return false;
        }
        //iteracja po katalogu
        foreach ($directoryIterator as $dir) {
            //katalog .
            if ($dir->isDot()) {
                continue;
            }
            //usunięcie rekurencyjne
            self::rmdirRecursive($dir->getPathname());
        }
        //próba usunięcia pustego katalogu
        try {
            rmdir($dirName);
        } catch (\Exception $e) {
            //prawdopodobnie już usunięty
            return false;
        }
        return true;
    }