W3docs

ftp_delete()

Функция ftp_delete() — встроенная функция PHP для удаления файла на удалённом FTP-сервере. Принимает два параметра.

Функция PHP ftp_delete()

ftp_delete() удаляет один файл с удалённого FTP-сервера. Это FTP-аналог функции unlink() для локальной файловой системы: вы передаёте ей открытое FTP-соединение и путь к файлу, который нужно удалить, а она сообщает, было ли удаление успешным.

На этой странице рассматриваются сигнатура функции, возвращаемое значение, полный рабочий пример, обработка ошибок и типичные ловушки (удаление каталогов, относительные и абсолютные пути, права доступа).

Синтаксис

ftp_delete(FTP\Connection $ftp, string $filename): bool
ПараметрТипОписание
$ftpFTP\ConnectionИдентификатор соединения, возвращённый функцией ftp_connect() (или ftp_ssl_connect()).
$filenamestringПуть к файлу, который нужно удалить на удалённом сервере.

Примечание: До PHP 8.1 первым аргументом был resource, возвращаемый ftp_connect(). Начиная с PHP 8.1 это объект FTP\Connection, однако код не изменяется — вы по-прежнему просто передаёте значение, возвращаемое ftp_connect().

Возвращаемое значение

ftp_delete() возвращает:

  • true — файл успешно удалён.
  • false — удаление не выполнено (файл не существует, недостаточно прав, путь указывает на каталог, либо соединение недействительно).

Поскольку и пустой путь, и любая ошибка приводят к возврату false, всегда явно проверяйте результат, не полагаясь на успех по умолчанию.

Полный пример

Сначала откройте соединение с помощью ftp_connect(), аутентифицируйтесь через ftp_login(), удалите файл, затем закройте сессию с помощью ftp_close():

<?php

// Open an FTP connection (default port 21, 90-second timeout)
$ftp = ftp_connect('ftp.example.com');

if ($ftp === false) {
    exit("Could not connect to the FTP server.\n");
}

// Authenticate
if (!ftp_login($ftp, 'username', 'password')) {
    ftp_close($ftp);
    exit("FTP login failed.\n");
}

// Switch to passive mode — required behind most firewalls/NAT
ftp_pasv($ftp, true);

// Attempt the delete
if (ftp_delete($ftp, '/uploads/old-report.txt')) {
    echo "File deleted successfully.\n";
} else {
    echo "Failed to delete the file.\n";
}

// Always close the connection
ftp_close($ftp);

Обработка ошибок

ftp_delete() выдаёт предупреждение PHP и возвращает false, если не может удалить файл. Надёжная проверка — это булево возвращаемое значение. Используйте ===, чтобы результат не спутать с ложным значением соединения:

<?php

if (ftp_delete($ftp, '/uploads/old-report.txt') === true) {
    echo "Deleted.\n";
} else {
    echo "Delete failed — check the path, permissions, and that it is a file, not a folder.\n";
}

Если вы хотите подавить встроенное предупреждение и вывести собственное сообщение, добавьте перед вызовом @:

<?php

if (@ftp_delete($ftp, $remotePath) === false) {
    error_log("ftp_delete failed for: $remotePath");
}

Типичные ловушки

  • Каталоги — не файлы. ftp_delete() удаляет только файлы. Для удаления каталога используйте ftp_rmdir() — причём каталог должен быть пустым, поэтому сначала удалите его содержимое (список файлов можно получить с помощью ftp_nlist()).
  • Относительные пути зависят от текущего каталога. Простое имя вроде report.txt разрешается относительно текущего рабочего каталога сервера. Предпочтительнее использовать абсолютные пути (/uploads/report.txt) или явно задавать каталог с помощью ftp_chdir().
  • Переименование вместо удаления. Если нужно лишь переместить или архивировать файл, используйте ftp_rename(), а не удаление с последующей повторной загрузкой.
  • Права доступа. Удаление завершается неявно (возвращает false), если у FTP-пользователя нет прав на запись/удаление в целевом каталоге.

Итог

ftp_delete() удаляет один файл на удалённом FTP-сервере и возвращает boolean, указывающий на успех операции. Сначала откройте и аутентифицируйте соединение, переключитесь в пассивный режим для совместимости, явно проверьте возвращаемое значение и используйте ftp_rmdir() когда нужно удалить каталог. Полный набор FTP-операций смотрите в справочнике PHP FTP.

Practice

Практика
Какова цель функции ftp_delete() в PHP?
Какова цель функции ftp_delete() в PHP?
Was this page helpful?