Удаление файлов из директории

Статус
В этой теме нельзя размещать новые ответы.

yeaahhh

Старатель
Регистрация
8 Май 2008
Сообщения
278
Реакции
11
Ребят, подскажите пожалуйста, как с помощью unlink удалить сразу все папки из указанной директории(нужно очистить директорию для её удаления), не используя функцию? Заранее большое спасибо
 
PHP:
function rmdir_recursive($dir) {
	$files = scandir($dir);
	array_shift($files);  
	array_shift($files);  

	foreach ($files as $file) {
		$file = $dir . '/' . $file;
		if (is_dir($file)) {
			rmdir_recursive($file);
			if (is_dir($file))
			rmdir($file);
		} else {
			unlink($file);
		}
	}
	rmdir($dir);
}
 
Что-то не получается..

$id2 - название папки, которое соответствует id пользователя
PHP:
$dir = dirname($_SERVER['DOCUMENT_ROOT'])."/polls/$id2/";

    $files = scandir($dir);
    array_shift($files);  
    array_shift($files);  

    foreach ($files as $file) {
        $file = $dir . '/' . $file;
        if (is_dir($file)) {
            rmdir_recursive($file);
            if (is_dir($file))
            rmdir($file);
        } else {
            unlink($file);
        }
    }
    rmdir($dir);
Вот какие ошибки:
PHP:
Warning: scandir(/home/zzz/polls/22/) [function.scandir]: failed to open dir: No such file or directory in /home/zzz/public_html/drop_poll.php  on line 34

Warning: scandir() [function.scandir]: (errno 2): No such file or directory in /home/zzz/public_html/drop_poll.php on line 34

Подскажите пожалуйста, что не так?
 
  • Заблокирован
  • #4
Пути неверные..
 
в моем примере код оформлен в виде функции не просто так ...
там если вы не заметили используется рекурсивный вызов функции

сделайте так
PHP:
// объявите где-то данную функцию 
function rmdir_recursive($dir) { 
    $files = scandir($dir); 
    array_shift($files);   
    array_shift($files);   
    foreach ($files as $file) { 
        $file = $dir . '/' . $file; 
        if (is_dir($file)) { 
            rmdir_recursive($file); 
            if (is_dir($file)) 
            rmdir($file); 
        } else { 
            unlink($file); 
        } 
    } 
    rmdir($dir); 
}
PHP:
$dir = dirname($_SERVER['DOCUMENT_ROOT'])."/polls/$id2/";
// а потом где необходимо вызывайте ее
 rmdir_recursive($dir);
если используете пхп 4 ( что конечно не желательно), то нужно будет заменить строку $files = scandir($dir);
на $files = myScandir($dir);
ну и соответственно еще реализовать функцию myScandir, к примеру так
PHP:
function myScandir($dir){
    $dh  = opendir($dir);
    while (false !== ($filename = readdir($dh))) {
        $files[] = $filename;
    }
    closedir($dh);
    sort($files);
    return $files;
}
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху