Удаление директорий с сервера (Локального)

SimpleTak

Новичок
Удаление директорий с сервера (Локального)

Не удаётся удалить директории с сервера с помощью функции rmdir(); если эта функция используется в цикле с использованием данных массива:
PHP:
foreach ($arrayDir as $filename){
  if(is_file($filename)){
    unlink($filename);
  } else {
    rmdir($filename);
 }
}
при таком использовании функции rmdir(); она возвращает ошибку:
"Warning: rmdir(S:/home/my.myrex/www/test/1): Permission denied in S:\home\my.myrex\www\system\function.inc.php on line 48"

как мне удалить директории???
-файлы удаляются нормально...
 

Demiurg

Guest
что в сообщении об ошибке не понятно ?
 

SimpleTak

Новичок
непонятно то, почему у меня недостаточно прав для удаления директории, так как через eval (если выполнить отдельно) всё удаляется нормально!
почему недостаточно прав в том случае если выполнять удаление через цикл???
 

SimpleTak

Новичок
примерно так:
PHP:
eval(rmdir('S:/home/my.myrex/www/test'));
и хоп-хоп директории нет!
 

netdog

net @
какой-то ты бред несешь.
во первых это надо еще додуматься через евал это пустить.

непонятно то, почему у меня недостаточно прав для удаления директории, так как через eval (если выполнить отдельно) всё удаляется нормально!

почему недостаточно прав в том случае если выполнять удаление через цикл???
rmdir('S:/home/my.myrex/www/test'); вне цикла, то че?
 

SimpleTak

Новичок
корочевот эта функция выдаёт ошибки при удалении директории, что прав для удаления недостаточно:
PHP:
function scandelfile($dir){
	$du[]=$dir;
	$dh=opendir($dir);
	while (false !== ($filename = readdir($dh))){
		if ($filename != '.' && $filename != '..'){
			$diro=$dir.'/'.$filename;
			if(is_dir($diro)){
				scandelfile($diro);
			} else {
				$du[]=$diro;
			}
		}
	}
// массив $du[] содержит пути файлов и директорий
	foreach ($du as $dudu){
		if(is_file($dudu)){
			unlink($dudu); // удаляем файлы (успешно)
		} else {
			rmdir($dudu); // удаляем директории (неудачно - недостаточно прав)
		}
	}
}
 

Demiurg

Guest
SimpleTak
хорошо, что ты делешься со всем этой функцией, но что нам с ней делать то ? она же не "не работает".
 

SimpleTak

Новичок
у меня эта функция возвращает:

Warning: rmdir(S:/home/my.myrex/www/test/1): Permission denied in S:\home\my.myrex\www\system\function.inc.php on line 53

Warning: rmdir(S:/home/my.myrex/www/test/1): Permission denied in S:\home\my.myrex\www\system\function.inc.php on line 53

Warning: rmdir(S:/home/my.myrex/www/test): Permission denied in S:\home\my.myrex\www\system\function.inc.php on line 53

а функция эта используется внутри другой функции...
короче кошмар какой-то, я уже три часа с этой фигнёй сижу...
и ведь должно-же работать, а неработает, зараза!!!

-- line 53 -это rmdir($dudu);
и ведь проверял $dudu -корректная пустая директория и при других условиях удаляется элементарно!
 

Demiurg

Guest
>и ведь должно-же работать
кому должно ?
еще раз повторяю, в сообщении об ошибке все есть.
 

SimpleTak

Новичок
Всё удачно разрешилось!

...
нужно просто освобждать дескропторы каталогов перед их удалением
 

Cyber Jack

Новичок
нужно просто освобждать дескропторы каталогов перед их удалением
PHP:
function SureRemoveDir($dir) {
   if(!$dh = @opendir($dir)) return;
   while (($obj = readdir($dh))) {
     if($obj=='.' || $obj=='..') continue;
     if (!@unlink($dir.'/'.$obj)) {
         SureRemoveDir($dir.'/'.$obj);
     } else {
         $file_deleted++;
     }

   }

   //освобждаем дескроптор 
   closedir($dh);

   if (@rmdir($dir)) $dir_deleted++;

}

// например удаляем папку news в папке images
SureRemoveDir("images/news");
 
Сверху