Forum Webscript.Ru

Программирование => PHP => Тема начата: Flash от 27 Мая 2002, 15:03:12

Название: Про удаление папки
Отправлено: Flash от 27 Мая 2002, 15:03:12
Известно, что в наборе стандартных функций в PhP есть функция удаления папок, но только в которых нет никаких вложенных папок и файлов. А есть ли какая-нить функция, которая удаляет папку, не смотря на то, что в ней есть файлы. Если нет, то не моглибы вы подкинуть алгоритм такой фу-ии? Заранее спасибо!
Название: Про удаление папки
Отправлено: Britva от 27 Мая 2002, 15:05:28
В любом случае нужно сначала все файлы удалить, а потом уже директорию.
Рекурсивный обход нужен. Поищи на форуме, уже было
Название: Про удаление папки
Отправлено: AlieN от 27 Мая 2002, 15:54:17
Flash

$handle = opendir($dir);
while (false !== ($file = readdir($handle)))
{
    if ($file != "." && $file != "..")
{
$del_file=$dir.$file;
unlink($del_file);
               }
}
closedir($handle);
rmdir($dir);
Название: Про удаление папки
Отправлено: Britva от 27 Мая 2002, 16:21:18
AlieN
А если еще и поддиректории? :)
Название: Про удаление папки
Отправлено: AlieN от 27 Мая 2002, 19:11:28
Britva
Тупая итерация:

function deletedir($dir)
{
$handle = opendir($dir);
        while (false !== ($file = readdir($handle)))
            {
            if ($file != "." && $file != "..")
                {
                $del_file=$dir."/".$file;
                if(!is_dir($del_file){unlink($del_file);}else{
deletedir($del_file);}
                }
            }
        closedir($handle);
        rmdir($dir);
}
Название: Про удаление папки
Отправлено: Flash от 28 Мая 2002, 00:29:15
Народ!!!! Спасибо - очень помогли!
Название: Про удаление папки
Отправлено: Million от 28 Мая 2002, 03:30:14
AlieN

Если в курсе объясни пожалуйста, что выдаёт
$handle = opendir($dir);
и
$file = readdir($handle);
Название: Про удаление папки
Отправлено: Flash от 28 Мая 2002, 06:35:34
$handler возвращает открытую диррикторию, а $file - следующий файл в дирриктории.
Название: Про удаление папки
Отправлено: Metaller от 28 Мая 2002, 09:16:01
[off]AlieN
Знакомый код.. где-то я его уже видел :-)))[/off]
Название: Про удаление папки
Отправлено: AlieN от 28 Мая 2002, 10:26:30
Metaller
Ясен пень, я же тебе его и давал :)
Название: Про удаление папки
Отправлено: Metaller от 28 Мая 2002, 11:05:51
AlieN
Ну... я его модифицировал, помнится... :-))
Название: Про удаление папки
Отправлено: Dm от 28 Мая 2002, 13:51:14
а не проще ли system("rm -r /"); ? =)
Название: Про удаление папки
Отправлено: AlieN от 28 Мая 2002, 14:45:57
Metaller
Я его сам модифицировал!


[OFF]
Явилось чудо света мои лавры себе хочет забрать!
[/OFF]
Название: Про удаление папки
Отправлено: Dm от 28 Мая 2002, 14:53:16
[OFF]AlieN, какой ты молодец![/OFF]
Название: Про удаление папки
Отправлено: AlieN от 28 Мая 2002, 18:18:49
Dm
[OFF]спасибо[/OFF]
Название: Про удаление папки
Отправлено: Million от 28 Мая 2002, 20:54:56
Цитировать
$handler возвращает открытую диррикторию,


$file=dirname($fol)
echo $file;
Выдаёт: Resource id #1
и ни чего содержимого.
Название: Про удаление папки
Отправлено: Million от 29 Мая 2002, 07:03:34
Цитировать
function deletedir($dir)
{
$handle = opendir($dir);
        while (false !== ($file =



А если получится что $dir=""; будет пустым, вынесит весь диск!!! так, что условие на проверочку $dir=="" может оказаться очень полезным!! или резервная копия может может пригодиться:)
Название: Про удаление папки
Отправлено: Flash от 29 Мая 2002, 10:04:11
Цитировать
$file=dirname($fol)
echo $file;
Выдаёт: Resource id #1
и ни чего содержимого.

Правильно, чего бы он те печатал? Он только дескриптор дерриктории выдал.


Цитировать
А если получится что $dir="";

если ты конечно файл со скриптом в корневую папку винта вложил.
Название: Про удаление папки
Отправлено: AlieN от 29 Мая 2002, 11:46:28
Цитировать
А если получится что $dir=""; будет пустым, вынесит весь диск!!!

Возможно, если скрипт запускался из корня диска
Название: Про удаление папки
Отправлено: Million от 29 Мая 2002, 14:06:08
Цитировать
Возможно, если скрипт запускался из корня диска

Скрипт ой как далеко от корня запускался, а убил всё кроме корня. Правда скрипт немного другой был ну суть вобщем то та-же.
Название: Про удаление папки
Отправлено: Flash от 29 Мая 2002, 14:58:44
Цитировать
Скрипт ой как далеко от корня запускался

По алгоритму такого быть не может..
Название: Про удаление папки
Отправлено: AlieN от 29 Мая 2002, 17:55:18
Цитировать
Скрипт ой как далеко от корня запускался

И удалил ? :)
Хорошой скрипт
Название: Про удаление папки
Отправлено: Metaller от 29 Мая 2002, 17:55:22
Цитировать
Правда скрипт немного другой

то-то и оно.... dev/hands :-)))))))
Название: Про удаление папки
Отправлено: AlieN от 29 Мая 2002, 18:19:23
ruki.sys
Название: Про удаление папки
Отправлено: Britva от 29 Мая 2002, 18:34:40
Metaller
AlieN
Хорош флеймить!!!!

зы. уже nn-ое предупреждение!