Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: листинг 13.67 PHP 5/6 в подлиннике
 
 автор: FallenAngel   (18.09.2011 в 23:42)   письмо автору
 
 

Попробовал запустить рекурсивную функцию из листинга 13.67, которая должна удалить папку, даже если папка не пустая, но PHP выдает ошибку Warning: rmdir(folder1) [function.rmdir]: Directory not empty in D:\xampp\htdocs\listingi\listing13_67.php on line 22
<?php
function recursiveDeleteFolder($directory)
{
    
$dd opendir($directory);
        while(
$file readdir($dd)!==false)
        {
            if(
is_file("$directory/$file"))
            {
                
unlink("$directory/$file");
            }
            else if(
is_dir("$directory/$file")&&$file!="."&&$file!="..")
            {
                
recursiveDeleteFolder("$directory/$file");
            }
        }    
        
closedir($dd);
        
rmdir($directory);
        echo 
"folder succesfuly delete";
}

recursiveDeleteFolder("folder1");

?>

Подскажите, пожалуйста, в чем причина? Ведь функция должна предварительно почистить содержимое папки, если та не пустая.

  Ответить  
 
 автор: cheops   (20.09.2011 в 16:20)   письмо автору
 
   для: FallenAngel   (18.09.2011 в 23:42)
 

1) А в реальности папка folder1 пустая в момент удаления?
2) Дело где происходит в Windows или в Linux? Может у PHP нет прав доступа на удаление файлов?

  Ответить  
 
 автор: FallenAngel   (22.09.2011 в 23:33)   письмо автору
 
   для: cheops   (20.09.2011 в 16:20)
 

1) Папка содержит другие файлы
2) В Windows
Нашел причину в строке
while($file = readdir($dd)!==false)
, переменная file вместо имени файла содержала "1". Изменил на
while($file = readdir($dd))
- скрипт удалил папку и все ее содержимое

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования