Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с папками, удаление, переименовывание 
:(
    Опции темы
Ciber SLasH
Дата 2.2.2006, 00:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1813
Регистрация: 9.11.2004
Где: С.-Петербург

Репутация: 3
Всего: 67



2Bacardi:
Вот, проверь:
Код

$slash = (substr(PHP_OS, 0,3) == 'WIN') ? '\\' : '/';
////////////////////////////////////////////////////////////////////////////////
function removeTree($dir) {
global $slash;
    if ($dh = opendir($dir)) {
        while ( ($fh = readdir($dh)) !== false ) {
            if ($fh != '.' && $fh != '..') {
                if (!@unlink($dir.$slash.$fh)) {
                    if (!removeTree($dir.$slash.$fh)) return false;
                }
            }
        }
        closedir($dh);
        if (!rmdir($dir)) return false;
        return true;
    }
return false;
}
////////////////////////////////////////////////////////////////////////////////
echo removeTree('J:\test');

PM   Вверх
Bacardi
Дата 2.2.2006, 21:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 134
Регистрация: 8.3.2005
Где: Москва

Репутация: нет
Всего: 1



Ciber SLasH
выводит ошибку:
Warning: rmdir(test\test1): Directory not empty in E:\SKS_WEB\sks-lighting.ru\www\remove.php on line 14
Добавлено @ 21:47
он попытался удалить папку второго уровня, а уровней 3!
--------------------
Необычная смесь. Болтать, но не мешать.http://www.livejournal.com/users/__bacardi__/
PM MAIL WWW ICQ   Вверх
Ciber SLasH
Дата 3.2.2006, 00:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1813
Регистрация: 9.11.2004
Где: С.-Петербург

Репутация: 3
Всего: 67



2Bacardi:
Приведи пожалуйства список каталогов и количества в них файлов на которых происходило тестирование.
Просто у меня с несколькими уровнями вложения всё нормально удалилось.
Добавлено @ 1:30
Переделал функцию, проверь ещё разок:
Код

$slash = (substr(PHP_OS, 0,3) == 'WIN') ? '\\' : '/';
////////////////////////////////////////////////////////////////////////////////
function removeTree($dir) {
global $slash;
    if ($dh = opendir($dir)) {
        while ( ($fh = readdir($dh)) !== false ) {
            if ($fh != '.' && $fh != '..') {
                if ((fileperms($dir.$slash.$fh) & 0x4000) == 0x4000) {    // если директория
                    if (!removeTree($dir.$slash.$fh)) return false;
                } else {
                    if (!@unlink($dir.$slash.$fh)) {
                        if (chmod($dir.$slash.$fh, 0777)) {
                            if (!@unlink($dir.$slash.$fh)) return false;
                        } else {
                            return false;
                        }
                    }
                }
            }
        }
        closedir($dh);
        if (!@rmdir($dir)) {
            if (chmod($dir, 0777)) {
                if (!rmdir($dir)) return false;
            } else {
                return false;
            }
        }
        return true;
    }
return false;
}
////////////////////////////////////////////////////////////////////////////////
set_time_limit(0);
echo removeTree('J:\Documents and Settings');

Проверял на удалении папки "Documents and Settings" (весит почти 500 метров), а там очень большая вложенность директорий встречается. Результат: удалил всё нафиг.

Это сообщение отредактировал(а) Ciber SLasH - 3.2.2006, 01:33
PM   Вверх
Bacardi
Дата 3.2.2006, 04:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 134
Регистрация: 8.3.2005
Где: Москва

Репутация: нет
Всего: 1



что ж у меня все не как у людей?!?!?
результат:
Warning: rmdir(test\test1): Directory not empty in E:\SKS_WEB\sks-lighting.ru\www\remove.php on line 24

дерево:
user posted image

Это сообщение отредактировал(а) Bacardi - 3.2.2006, 04:06
--------------------
Необычная смесь. Болтать, но не мешать.http://www.livejournal.com/users/__bacardi__/
PM MAIL WWW ICQ   Вверх
Ciber SLasH
Дата 3.2.2006, 06:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1813
Регистрация: 9.11.2004
Где: С.-Петербург

Репутация: 3
Всего: 67



Хм, проверил даже в сети на бесплатном хостинге (у них там FreeBSD) на тестовой папке с несколькими уровнями вложенности — всё удалилось начисто...
Добавлено @ 06:12
Кстати, прикрепи архив папки, на которой ты тестировал, а я залью себе на "тестовый сайт" и протестю там.
PM   Вверх
Mal Hack
Дата 3.2.2006, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Bacardi не забывай, в винде все это несколько не так работает.
К примеру на моей машине при rename писал "директория не найдена", при этом прекрасно переименовывал.
PM ICQ   Вверх
AnikinAlexey
Дата 17.3.2007, 20:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 27.11.2006

Репутация: нет
Всего: нет



у меня похожая трабла. 
Скрипт создает такую структуру папок: 
                         папка1\папка11
                         папка1\папка12
                         папка1\файл.фл
во вложенные папки копируются файлы во время работы ...
после тем же скриптом пытаюсь все удалить.
для этого сначала удаляю файлы из вложенных папок и удаляю их.
после удаляю файл (папка1\файл.фл) - он не удаляется (доступ 644, на папке 755)
соответственно и не удаляется главная папка.

подскажите что может быть не так?

PM MAIL   Вверх
Render
Дата 18.3.2007, 01:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 94
Регистрация: 12.5.2005

Репутация: нет
Всего: 3



Тема

И с правами проблем тоже нет.

Это сообщение отредактировал(а) Render - 18.3.2007, 01:08
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1250 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.