Удалить все файлы и папки удаленного сервера через PHP FTP

Удалить все файлы и папки удаленного сервера через PHP FTP

PHP позволяет подключаться к удаленному серверу по FTP и управлять его файлами. Например, скачивать, удалять, загружать новые папки и файлы. Но если нужно удалить папку, со всем содержимым, то могут возникнуть проблемы.Дело в том, что в библиотеке php ftp нет такой команды напрямую. Можно удалить или один файл, или одну папку (пустую).

Сделаем скрипт, который по выбранной директории удаленного сервера просканирует и удалит все папки и файлы. Для этого я буду использовать свою библиотеку, о которой писал ранее.

Принцип работы скрипта такой - мы просто загружаем на сервер определенный файл, при запуске которого удалится все содержимое нужной директории. Пусть фтп сделан до корня сайта demosite.ru, а наша задача очистить его содержимое.

<?php
//FTP соединение успешно установлено
if($ftpObj->connect('ftp_host', 'ftp_username', 'ftp_userpassword')) {
$ftpObj->delFile('/index.html'); //удаляем индексные файлы, которые могут помешать в FTP
$ftpObj->delFile('/index.php'); //удаляем индексные файлы, которые могут помешать в FTP
//грузим index-й файл, который сможет удалить все содержимое корня выбранного сайта
$ftpObj->uploadFile('/index.php', $_SERVER['DOCUMENT_ROOT'].'/index.php');
}
?>

Т.е. если запускать этот скрипт с корня нашего сайта, то он подключится к корню demosite.ru и удалит оттуда index.html и index.php файлы, а затем загрузит с корня нашего сайта файл index.php. Его содержимое:

<?php
$dir = __DIR__; //путь от сервера к месту где исполняется этот скрипт: /var/www/u06757657657/data/www/demosite.ru
function removeDirectory($dir) {
if ($objs = glob($dir."/*")) {
foreach($objs as $obj) {
if(is_dir($obj)) { removeDirectory($obj); } //если папка
else { //если файл
unlink($obj);
} } }
if($dir != __DIR__) rmdir($dir); //удаляем все папки, кроме той, откуда запущен скрипт
}
removeDirectory($dir);
?>

Теперь если мы зпустим demosite.ru/index.php, то скрипт удалит все содержимое внутри этого домена.

Данную задачу мне необходимо было сделать для быстрой выгрузки сайтов на удаленные серверы (с учетом удаления старых файлов этих сайтов). Когда пользователь открывал свой сайт срабатывал этот index.php, только немного другой. Сначала он все удалял, а затем автоматически разархивировал архив с новым сайтом.

На основе этого скрипта вполне можно создать и "нормальный" код, который сначала получит все содержимое папок и файлов корня удаленного сервера $ftpObj->listFile(''); а затем методами $ftpObj->delFile(''); и $ftpObj->delDir(''); будет удалять папки и файлы через цикл.

| | Удалить все файлы и папки удаленного сервера через PHP FTP | PHP позволяет подключаться к удаленному серверу по FTP и управлять его файлами. Например, скачивать, удалять, загружать новые папки и файлы. Но если н | http://blogprogram.ru/wp-content/uploads/2017/11/818-131x131.jpg