@BloodVIRUS

Как удалить все файлы и символические линки?

Здравствуйте. Встала проблема, php не умеет директории с файлами, он умеет удалять только файлы, и только пустые директории. По этому бралась не сложная функция перебора файлов и папок, с последующим удалением их, по одному:

function delTree($dir) { 
       $files = array_diff(scandir($dir), array('.','..')); 
        foreach ($files as $file) { 
          (is_dir("$dir/$file")) ? delTree("$dir/$file") : unlink("$dir/$file"); 
        } 
        return rmdir($dir); 
      }

Но с некоторых пор в директории могут находиться символические линки, и вот тут поведение скрипта стало немного иное. Перебирая файлы и папки скрипт натыкаясь на символическую ссылку вполне закономерно переходит в нее, и продолжает удалять содержимое ссылки. Что очень не приятно.. А как удалить только сами ссылки? Если бы я знал точно где и как называется ссылка, я бы мог вначале на ссылки выполнить unlink(), а потом скриптом перебрать все файлы\папки. Но названий ссылок я не знаю. Знаю лишь вложенность, т.е где именно будут сссылки (/var/www/folder_name/images)
Спасибо.
  • Вопрос задан
  • 190 просмотров
Решения вопроса 1
qork
@qork
{ background: #F00B42 }
DirectoryIterator, метод isLink
php.net/manual/en/directoryiterator.islink.php#ref...

Предлагается для символической ссылки вместо rmdir использовать unlink, как для файла.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы