W3docs

ftp_delete()

La función ftp_delete() de PHP elimina un archivo en un servidor FTP remoto. Recibe dos parámetros: la conexión y la ruta del archivo.

La función ftp_delete() de PHP

ftp_delete() elimina un único archivo de un servidor FTP remoto. Es el equivalente FTP de unlink() en un sistema de archivos local: se le pasa una conexión FTP abierta y la ruta del archivo a eliminar, y devuelve si la eliminación fue exitosa.

Esta página cubre la firma de la función, el valor de retorno, un ejemplo completo funcional, el manejo de errores y los errores comunes (eliminar directorios, rutas relativas vs. absolutas y permisos).

Sintaxis

ftp_delete(FTP\Connection $ftp, string $filename): bool
ParámetroTipoDescripción
$ftpFTP\ConnectionEl identificador de conexión devuelto por ftp_connect() (o ftp_ssl_connect()).
$filenamestringLa ruta del archivo a eliminar en el servidor remoto.

Nota: Antes de PHP 8.1, el primer argumento era un resource devuelto por ftp_connect(). A partir de PHP 8.1 es un objeto FTP\Connection, pero el código no cambia — simplemente se pasa el valor que devuelve ftp_connect().

Valor de retorno

ftp_delete() devuelve:

  • true — el archivo fue eliminado correctamente.
  • false — la eliminación falló (el archivo no existe, no hay permisos, la ruta es un directorio o la conexión no es válida).

Dado que una ruta vacía válida o cualquier fallo se representa como false, siempre compruebe el resultado de forma explícita en lugar de asumir el éxito.

Un ejemplo completo

Primero se abre una conexión con ftp_connect(), se autentica con ftp_login(), se elimina el archivo y luego se cierra la sesión con 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);

Manejo de errores

ftp_delete() emite una advertencia de PHP y devuelve false cuando no puede eliminar el archivo. La comprobación confiable es el valor de retorno boolean. Use === para que el resultado no se confunda con un valor de conexión falsy:

<?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";
}

Si desea suprimir la advertencia incorporada y mostrar su propio mensaje, anteponga @ a la llamada:

<?php

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

Errores comunes

  • Los directorios no son archivos. ftp_delete() solo elimina archivos. Para eliminar un directorio use ftp_rmdir() — y el directorio debe estar vacío primero, así que elimine su contenido (puede listarlo con ftp_nlist()) antes de borrarlo.
  • Las rutas relativas dependen del directorio actual. Un nombre simple como report.txt se resuelve respecto al directorio de trabajo actual del servidor. Prefiera rutas absolutas (/uploads/report.txt), o establezca el directorio explícitamente con ftp_chdir().
  • Renombrar en lugar de eliminar. Si solo necesita mover o archivar un archivo, use ftp_rename() en lugar de eliminar y volver a subir.
  • Permisos. La eliminación falla silenciosamente (devuelve false) cuando el usuario FTP no tiene derechos de escritura/eliminación en el directorio de destino.

Resumen

ftp_delete() elimina un único archivo en un servidor FTP remoto y devuelve un boolean que indica el éxito. Abra y autentique la conexión primero, cambie al modo pasivo para mayor compatibilidad, compruebe el valor de retorno de forma explícita y recurra a ftp_rmdir() cuando necesite eliminar un directorio. Para el conjunto completo de operaciones FTP, consulte la referencia FTP de PHP.

Practice

Práctica
¿Cuál es el propósito de la función ftp_delete() en PHP?
¿Cuál es el propósito de la función ftp_delete() en PHP?
Was this page helpful?