| |
|
|
| |
function full_del_dir ($directory)
{
$dir = opendir($directory);
while(($file = readdir($dir)))
{
if ( is_file ($directory."/".$file))
{
unlink ($directory."/".$file);
}
else if ( is_dir ($directory."/".$file) &&
($file != ".") && ($file != ".."))
{
full_del_dir ($directory."/".$file);
}
}
closedir ($dir);
rmdir ($directory);
}
|
функцию удаления непустых директорий взяла отсюда:
http://www.softtime.ru/bookphp/gl6_8.php
там, кстати, ошибка - в последнем операторе нет точки с запятой в конце
не работает. не удаляет ни саму папку, ни ее содержимое. :(
по одному удалять файлы скриптом получается, значит, дело не в CHMOD'ax.
надо при удалении все галереи удалить сначала все фотки из ее папки, а потом саму папку | |
| |
|
|
| |
|
|
| |
для: elenaki
(25.07.2007 в 21:18)
| | |
<?
function full_del_dir ($directory)
{
if(!is_dir($directory))
return false;
$dir = opendir($directory);
if(!$dir) return false;
while(($file = readdir($dir)))
if ( is_file ($directory."/".$file))
echo "<br/>\r\n Deleted $directory/$file : "
.(unlink ($directory."/".$file)?"Ok":"failed") ;
elseif ( is_dir ($directory."/".$file) &&
($file != ".") && ($file != ".."))
full_del_dir ($directory."/".$file);
closedir ($dir);
echo "<br/>\r\n Removed $directory/ : "
.(($s = rmdir($directory))?"Ok":"failed") ;
return $s;
}
echo full_del_dir("c:/zoo/inv1/baddir");
?>
|
Removed c:/zoo/inv1/baddir/1/news/ : Ok
Removed c:/zoo/inv1/baddir/1/ : Ok
Deleted c:/zoo/inv1/baddir/admin/addnews.php : Ok
Deleted c:/zoo/inv1/baddir/admin/addnewsform.php : Ok
Deleted c:/zoo/inv1/baddir/admin/delnews.php : Ok
Deleted c:/zoo/inv1/baddir/admin/editnews.php : Ok
Deleted c:/zoo/inv1/baddir/admin/editnewsform.php : Ok
Deleted c:/zoo/inv1/baddir/admin/hide.php : Ok
Deleted c:/zoo/inv1/baddir/admin/index.php : Ok
Deleted c:/zoo/inv1/baddir/admin/show.php : Ok
Removed c:/zoo/inv1/baddir/admin/ : Ok
Deleted c:/zoo/inv1/baddir/config.php : Ok
Removed c:/zoo/inv1/baddir/files/ : Ok
Deleted c:/zoo/inv1/baddir/index.php : Ok
Deleted c:/zoo/inv1/baddir/LICENSE : Ok
Deleted c:/zoo/inv1/baddir/news.css : Ok
Deleted c:/zoo/inv1/baddir/news.php : Ok
Deleted c:/zoo/inv1/baddir/news.sql : Ok
Deleted c:/zoo/inv1/baddir/README : Ok
Deleted c:/zoo/inv1/baddir/util/admin.css : Ok
Deleted c:/zoo/inv1/baddir/util/bottomadmin.php : Ok
Deleted c:/zoo/inv1/baddir/util/nulltop.php : Ok
Deleted c:/zoo/inv1/baddir/util/topadmin.php : Ok
Removed c:/zoo/inv1/baddir/util/ : Ok
Removed c:/zoo/inv1/baddir/ : Ok1
|
| |
| |
|
|
| |
|
|
| |
для: Trianon
(25.07.2007 в 21:32)
| | | Эта функция не работает если имена файлов например 0010.class 0020.class 0100.class, их правильно видит glob() но кажется не видит имена начинающиеся с точки | |
| |
|
|
| |
|
|
| |
для: EXP
(26.07.2007 в 01:48)
| | |
Deleted c:/exp/0010.class/0020.class/0030.class : Ok
Deleted c:/exp/0010.class/0020.class/Descript.ion : Ok
Removed c:/exp/0010.class/0020.class/ : Ok
Removed c:/exp/0010.class/ : Ok
Removed c:/exp/ : Ok1
|
| |
| |
|
|
| |
|
|
| |
для: Trianon
(26.07.2007 в 02:04)
| | | хотела уточнить, что удалять папки надо на сервере. написала ему физический путь до
папки (она на уровень выше скрипта находится). все равно не удаляется. просто ничего
с ней не происходит и ошибок не выдается. права у папки 0777, создана она тоже скриптом,
имя соответствует id галереи в базе, т.е. 1, 17 и т.д... | |
| |
|
|
| |
|
|
| |
для: elenaki
(26.07.2007 в 09:47)
| | | В таком случае либо указан неверный путь до папки (слеш на конце не надо писать), либо всё-таки что-то с правами.
<?php
//...
$directory = preg_replace("|/$|", "", $directory);
if(!is_dir($directory))
{
print('"' . $directory . '" is not dir');
return false;
}
$dir = opendir($directory);
if(!$dir)
{
print('Could not open "' . $directory . '"');
return false;
}
//...
?>
|
| |
| |
|
|
| |
|
|
| |
для: elenaki
(26.07.2007 в 09:47)
| | | Хотелось бы увидеть отчет. | |
| |
|
|
| |
|
|
| |
для: Trianon
(26.07.2007 в 10:35)
| | | Removed /home/virtual/site500/fst/var/www/html/photos/19/ : failed
папка с фотками - на месте, как приклееная. | |
| |
|
|
| |
|
|
| |
для: elenaki
(26.07.2007 в 21:17)
| | | единственная строка?
Без попыток удалить файлы?
странно. Значит файлы не видны...
А как файлы анзываются? | |
| |
|
|
| |
|
|
| |
для: elenaki
(26.07.2007 в 21:17)
| | | Попробуйте вместо проверки if (!is_dir(... Сделать if (file_type($dir) != 'dir') .
// заметил что у меня нет не file_type ни file_size :) зато ts-dir похоже работает выше
/home/.... не работает
<?php
$DIR = 'D:/WebServers/home/localhost/www//SMALL';
// пробовал "../dir/SMALL" , бесполезно , как-будто ищет на Z:/
function
DelFiles($DIR)
{
$dk = glob($DIR . '/*');
for($i = 0; $i < count($dk); $i++)
{
$file = $dk[($i)] ;
if ( !is_dir($file)) {
if (!unlink($file)) echo $file . '--<br>';
else echo '.';
} else {
DelFiles($file);
}
}
if (rmdir($DIR)) echo $DIR . ' deleted<br>';
}
DelFiles($DIR)
?>
|
read&while тоже работает с ......./0010, ...../010 оказалось | |
| |
|
|
| |
|
|
| |
для: elenaki
(26.07.2007 в 21:17)
| | | У Вас случайно ошибки на хостинге не заблокированы? | |
| |
|
|
| |
|
|
| |
для: Trianon
(27.07.2007 в 03:04)
| | | Я переписал скрипт, увеличив его агрессивность.
Теперь если даже прав на просмотр характеристик ему не отдают, он пытается сожрать и смести всё, до чего может дотянуться.
<?
function full_del_dir ($directory)
{
$r = "";
if($dir = opendir($directory))
{
while(($file = readdir($dir)))
{
if ( $file == "." || $file == "..")
continue;
echo "<br/>\r\nFound $directory/$file ";
$if = is_file($directory."/".$file) ? 'f' : '0';
$id = is_dir($directory."/".$file) ? 'd' : '0';
echo "[$id$if] ";
if(!$id) echo unlink ($directory."/".$file)?"ul:Ok":"ul:Er" ;
if(!$if) echo full_del_dir ($directory."/".$file);
}
closedir ($dir);
}
else
$r .= "fullrmdir $directory : Cannot open as dir";
$r .= "<br/>\r\n Rmdir $directory : "
.(rmdir($directory)?"Ok":"failed") ;
return $r;
}
echo full_del_dir("c:/zoo/inv1/baddir");
?>
|
| |
| |
|
|
| |
|
|
| |
для: Trianon
(27.07.2007 в 10:06)
| | | Found ../photos/20/04030203.jpg [00] ul:Erfullrmdir ../photos/20/04030203.jpg : Cannot open as dir
Rmdir ../photos/20/04030203.jpg : failed
Found ../photos/20/Picture 002.jpg [00] ul:Erfullrmdir ../photos/20/Picture 002.jpg : Cannot open as dir
Rmdir ../photos/20/Picture 002.jpg : failed
Found ../photos/20/Picture 001.jpg [00] ul:Erfullrmdir ../photos/20/Picture 001.jpg : Cannot open as dir
Rmdir ../photos/20/Picture 001.jpg : failed
Rmdir ../photos/20 : failed | |
| |
|
|
| |
|
|
| |
для: elenaki
(27.07.2007 в 10:56)
| | |
Found ../photos/20/04030203.jpg
| означает, что был обнаружен элемент каталога с таким именем ../photos/20/04030203.jpg
означает, что про этот элемент не было сказано, ни что это файл, ни что это каталог
Фактически, файловая система отказалась сообщать эккаунту php-процесса любую информацию об этом файле - видимо по причине отсутствия должных привилегий.
означает, что операция unlink(../photos/20/04030203.jpg) завершилась неудачно.
Видимо по той же причине.
fullrmdir ../photos/20/04030203.jpg : Cannot open as dir
| означает, что попытка просканировать этот элемент в предположении, что это каталог, завершилась неудачно. Это как раз неудивительно - это же не каталог.
Rmdir ../photos/20/04030203.jpg : failed
| означает, что попытка удалить этот элемент в предположении, что это каталог, завершилась неудачно. Это тоже неудивительно.
и так несколько раз по числу фоток.
Rmdir ../photos/20 : failed
| попытка удалить объемлющий каталог не выполнена потому, что не удалось удалить элементы из него.
А чтобы вывод был чуть нагляднее, строку
$r .= "fullrmdir $directory : Cannot open as dir";
нужно изменить так:
$r .= "<br/>\r\n opendir $directory : Cannot open as dir";
|
| |
| |
|
|
| |
|
|
| |
для: Trianon
(27.07.2007 в 11:30)
| | | Текущую папку узнавайте dirname (__FILE__)
ЗЫ. А вы не позабывали права на доступ к файлам и папкам постаить на 777? | |
| |
|
|
| |
|
|
| |
для: @ndry
(27.07.2007 в 11:59)
| | | да я вообще тут не при делах )) | |
| |
|
|
| |
|
|
| |
для: @ndry
(27.07.2007 в 11:59)
| | | права на все папки 777 (я же вешала скриншот). папки создаются скриптом. т.е., при
создании галереи (вернее, при попытке добавить в нее фотки), создается папка с именем
как id этой галереи, ей устанавливаются права 777 и заносятся фотки. если удалять
отдельные фотки, они нормально удаляются. а хотелось бы при удалении галереи целиком
удалять всю ее папку вместе с фотками (поочереди, конечно, сначала файлы, потом папку).
значит, не судьба :( | |
| |
|
|
| |
|
|
| |
для: elenaki
(27.07.2007 в 12:12)
| | | покажите пожалуйста скрипт (и его отчет), в котором будет видно, что они удаляются по-отдельности.
Скриптом!
То, что их можно удалить через ftp, ни у кого сомнений не вызывает. | |
| |
|
|
| |
|
|
| |
для: Trianon
(27.07.2007 в 12:17)
| | | ааааа! они что-то поменяли на сервере! не удаляются и файлы по одиночке. точно удалялись,
как бы я дошла до 21-го номера галереи? я их создавала, удаляла, снова создавала... гады!
в последний день работы до отпуска... поубиваю... вечно эти хостеры палки в колеса вставляют ... | |
| |
|
|