@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)
Спасибо.
  • Вопрос задан
  • 174 просмотра
Решения вопроса 1
qork
@qork
{ background: #F00B42 }
DirectoryIterator, метод isLink
php.net/manual/en/directoryiterator.islink.php#ref...

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

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
Бюро Цифровых Технологий Санкт-Петербург
от 120 000 до 180 000 ₽
03 мая 2024, в 16:09
1200 руб./за проект
03 мая 2024, в 16:06
3000 руб./за проект
03 мая 2024, в 15:48
2000 руб./за проект