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

Тема в разделе "PHP", создана пользователем yeaahhh, 30 июн 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. yeaahhh

    yeaahhh

    Регистр.:
    8 май 2008
    Сообщения:
    278
    Симпатии:
    11
    Ребят, подскажите пожалуйста, как с помощью unlink удалить сразу все папки из указанной директории(нужно очистить директорию для её удаления), не используя функцию? Заранее большое спасибо
     
  2. chang

    chang

    Регистр.:
    20 ноя 2009
    Сообщения:
    363
    Симпатии:
    117
    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);
    }
     
    yeaahhh нравится это.
  3. yeaahhh

    yeaahhh

    Регистр.:
    8 май 2008
    Сообщения:
    278
    Симпатии:
    11
    Что-то не получается..

    $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:
    Warningscandir(/home/zzz/polls/22/) [function.scandir]: failed to open dirNo 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. Digwnews

    Digwnews Читатель

    Заблокирован
    Регистр.:
    1 мар 2010
    Сообщения:
    127
    Симпатии:
    24
    Пути неверные..
     
  5. chang

    chang

    Регистр.:
    20 ноя 2009
    Сообщения:
    363
    Симпатии:
    117
    в моем примере код оформлен в виде функции не просто так ...
    там если вы не заметили используется рекурсивный вызов функции
    http://www.softtime.ru/bookphp/gl5_4.php
    сделайте так
    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;
    }
     
    yeaahhh нравится это.
Статус темы:
Закрыта.