Удаление "неудаляемых" файлов с веб-сервера Владельцу собственного веб-сайта всегда приятно ощущать себя полноправным хозяином пусть небольшого, но самого настоящего кусочка Всемирной сети. Появляются приятные хлопоты по содержанию своего виртуального дома в чистоте и порядке, дабы ежедневно забегающие посетители не тыкали потом пальцем в различные "косяки" и не отзывались о ресурсе, как о мусорной свалке, в которой тяжело найти что-то интересное.
Впрочем, среди загруженных на сервер данных со временем появляются "фантомы" в виде файлов или каталогов с непонятными названиями. Более того, при попытке их удалить ничего не происходит, зато появляется сообщение о том, что у вас недостаточно прав для выполнения такой операции. Ситуация, на первый взгляд, странная: ваш же ресурс, в рамках которого вы - "царь и бог", и вдруг на нем оказывается нечто неподвластное.
На самом деле это вполне обыденная ситуация. Как правило, веб-ресурсы мы создаём не на своих серверах, а арендуем место у провайдера. При этом его программное обеспечение наделено куда большими правами, чтобы контролировать действия тысяч "царьков", разместивших свои виртуальные "королевства" на сервере. Но дело это хлопотное, поэтому часто рутинную работу выполняют различного рода служебные скрипты, и они, естественно, также спокойно прохаживаются по вашим каталогам, так как хозяин-хостер наделил их более высокими привилегиями, чем вас. Вот именно их деятельностью и объясняется появление неподвластных вам фантомов (нередко неудаляемые объекты возникают и после инсталляции систем управления контентом CMS. - прим. ред.).
Но выход есть. Раз цифровой "мусор" в вашем хозяйстве оставлен бестелесными скриптами, и права доступа к нему вам не обеспечены, можно попробовать "внедрить" в коллектив этих невидимых тружеников своего "уборщика". Идея проста: если серверное ПО запускает выполнение скриптов, то почему бы ему не запустить и наш, тем самым, выполнив его от своего имени и с соответствующими правами доступа? Чаще всего на серверах используется скриптовый язык PHP, поэтому рассмотрим соответствующий пример (его оригинал представлен по этому адресу).
Для начала создадим в любом текстовом редакторе тот самый PHP-скрипт следующего содержания:
$deldir = "Путь_к_директории_на_сервере"; rmdirr($deldir);
function rmdirr($dirname) { if (!file_exists($dirname)) { return false; } if (is_file($dirname)) { return unlink($dirname); } $dir = dir($dirname); while (false !== $entry = $dir->read()) { if ($entry == '.' || $entry == '..') { continue; } rmdirr("$dirname/$entry"); } $dir->close(); return rmdir($dirname); } ?>
В переменной $deldir указываем путь к файлу или каталогу, предназначенному к удалению и сохраняем скрипт под именем, к примеру, deleter.php. Загружаем наш файл на свой сервер.
Следует заметить, что если, к примеру, вы поместили скрипт в каталог ftp://ftp.mysite.net, а подлежащий к удалению каталог расположен по адресу ftp://ftp.mysite.net/movies/files/1234, то в скрипте путь к нему должен выглядеть так: $deldir = "movies/files/1234";
Далее открываем браузер и вводим адрес www.mysite.net/deleter.php. Окно браузера останется пустым, но при этом указанные нами в скрипте данные будут удалены. Если "мусора" много, то, меняя путь в скрипте, аналогично удаляем все "неподвластные" файлы и каталоги.
По материалам журнала КомпьютерраOnline (www.computerra.ru) |