ftp_rmdir()
Функция ftp_rmdir() — встроенная функция PHP для удаления каталога на FTP-сервере. Подробное описание и примеры использования.
Знакомство с функцией PHP ftp_rmdir()
Функция ftp_rmdir() — это встроенная функция PHP, которая удаляет каталог на FTP-сервере. В этой статье мы подробно рассмотрим функцию и предоставим исчерпывающее руководство по её использованию в PHP-проектах.
Что такое ftp_rmdir()?
Функция ftp_rmdir() удаляет каталог на FTP-сервере. Она является аналогом ftp_mkdir(), которая создаёт каталог.
Ключевое ограничение: функция работает только с пустыми каталогами. Если каталог содержит файлы или подкаталоги, вызов завершится неудачей и вернёт false. Чтобы удалить непустой каталог, необходимо сначала удалить его содержимое (см. рекурсивный пример ниже).
Функция принимает два параметра:
ftp— FTP-соединение, возвращённое функциейftp_connect()(и аутентифицированное с помощьюftp_login()).directory— путь к удаляемому каталогу.
В случае успеха функция возвращает true, при ошибке — false.
Синтаксис ftp_rmdir()
Сигнатура функции ftp_rmdir():
ftp_rmdir(FTP\Connection $ftp, string $directory): boolОба параметра обязательны. Обратите внимание: в PHP 8.1 и выше соединение представлено объектом FTP\Connection; до PHP 8.1 это был resource. Параметр directory — имя (относительно текущего каталога) или абсолютный путь к удаляемому каталогу.
Использование ftp_rmdir()
Чтобы воспользоваться функцией ftp_rmdir(), необходимо сначала установить соединение с FTP-сервером с помощью функции ftp_connect(). Ниже приведён полный пример:
<?php
// Set up an FTP connection
$conn = ftp_connect('ftp.example.com');
if (!$conn) {
die("Could not connect to FTP server.");
}
// Login with your FTP credentials
if (!ftp_login($conn, 'username', 'password')) {
die("Login failed.");
}
// Remove the directory
if (ftp_rmdir($conn, '/public_html/testdir')) {
echo "Directory removed successfully.\n";
} else {
echo "Directory removal failed. Ensure the directory is empty.\n";
}
// Close the FTP connection
ftp_close($conn);Пошагово: открываем соединение с помощью ftp_connect() и проверяем его; выполняем вход через ftp_login(); удаляем каталог функцией ftp_rmdir() и выводим результат; затем закрываем соединение функцией ftp_close().
Рекурсивное удаление непустого каталога
Поскольку ftp_rmdir() не работает с непустыми каталогами, удаление дерева папок требует предварительного удаления всех файлов и подкаталогов. Можно получить список содержимого с помощью ftp_nlist(), удалить файлы через ftp_delete() и рекурсивно обойти подкаталоги:
<?php
function ftpRemoveTree($conn, string $dir): bool
{
// ftp_delete handles files; ftp_rmdir handles (now-empty) directories.
if (@ftp_delete($conn, $dir)) {
return true;
}
// Not a file — assume it's a directory and clear its contents.
$items = ftp_nlist($conn, $dir);
if ($items === false) {
return false;
}
foreach ($items as $item) {
// Skip the "." and ".." entries some servers return.
$name = basename($item);
if ($name === '.' || $name === '..') {
continue;
}
ftpRemoveTree($conn, $item);
}
// Directory is empty now, so it can be removed.
return ftp_rmdir($conn, $dir);
}Обработка ошибок в ftp_rmdir()
Важно обрабатывать ошибки при использовании ftp_rmdir(). Возврат false означает, что удаление не удалось — чаще всего это происходит, если каталог непустой, не существует или у учётной записи нет необходимых прав. Всегда проверяйте возвращаемое значение, а не рассчитывайте на успех:
<?php
if (!ftp_rmdir($conn, '/public_html/testdir')) {
echo "Failed to remove directory. Ensure it is empty and you have proper permissions.\n";
}
ftp_close($conn);Связанные FTP-функции
ftp_mkdir()— создать каталог.ftp_delete()— удалить отдельный файл.ftp_nlist()— получить список содержимого каталога.ftp_chdir()— сменить текущий рабочий каталог.ftp_pwd()— получить путь к текущему каталогу.
Заключение
Функция ftp_rmdir() удаляет пустой каталог на FTP-сервере, возвращая true в случае успеха и false при ошибке. Чтобы удалить каталог с файлами, сначала очистите его содержимое — например, с помощью рекурсивного вспомогательного метода из примера выше. В сочетании с тщательной проверкой возвращаемых значений это надёжный инструмент для управления структурой удалённых каталогов из PHP.