Удаление не пустого каталога по FTP
Недавно столкнулся с ситуацией когда необходимо удалить не пустой каталог по протоколу FTP с помощью PHP, решения в сети не нашел, поэтому сделал сам:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | $ftp_server = "127.0.0.1"; // IP-адрес FTP-сервера $ftp_user_name = "admin"; // Пользователь $ftp_user_pass = "admin"; // Пароль $conn_id = ftp_connect($ftp_server) or die("Не удалось установить соединение с $ftp_server<br>"); $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); if ((!$conn_id) || (!$login_result)) { echo "<font color=\"red\">Не удалось установить соединение</font> с FTP сервером!<br>"; echo "Попытка подключения к серверу $ftp_server под именем $ftp_user_name!<br>"; exit; } else { echo "<font color=\"green\">Установлено соединение</font> с FTP сервером $ftp_server под именем $ftp_user_name<br>"; } $start_root = ""; // Здесь укажите директорию для удаления, относительно корневого каталога FTP function full_list($dir, $conn_id) { $result = ""; if((sizeof(explode("/..", $dir))<=1)||(sizeof(explode("/.", $dir))<=1)) { if (@ftp_delete($conn_id, $dir)) { echo "Файл $c <font color=\"red\">удален</font>\n<br>"; } else { if (@ftp_rmdir($conn_id, $dir)) { echo "Директория $c <font color=\"red\">удалена</font>\n<br>"; } else { echo "<font color=\"green\">Scaning</font> $dir <br>"; $contents = ftp_nlist($conn_id, $dir); if($contents!="") foreach ($contents as $c) { if($c!=$dir) { if (@ftp_delete($conn_id, $c)) { echo "Файл $c <font color=\"red\">удален</font>\n<br>"; } else { if (@ftp_rmdir($conn_id, $c)) { echo "Директория $c <font color=\"red\">удалена</font>\n<br>"; } else { $result = full_list($c, $conn_id); } } } } } } } return $result; } echo full_list($start_root, $conn_id); |
Понадобилась рекурсия, скрипт немного громоздкий, но работает. Если у вас есть более компактный вариант, то пришлите мне на почту(w3db@yandex.ru) или напишите об этом в комментариях.
Похожие записи:
- Как работать и не уставать?
- Дело львовского судьи
- Как работать и не уставать(продолжение)
- Смена регистратора
- Наконец-то свершилось :)
Метки: «Ftp Connect» , «php» , «Rmdir» , «Exit»
Опубликовано 22 апреля 2009 года в категории «Кодим на PHP вместе»

Разработчик XHTML
апреля 25, 2009 6:00 ппСпасибо!