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ámetro | Tipo | Descripción |
|---|---|---|
$ftp | FTP\Connection | El identificador de conexión devuelto por ftp_connect() (o ftp_ssl_connect()). |
$filename | string | La ruta del archivo a eliminar en el servidor remoto. |
Nota: Antes de PHP 8.1, el primer argumento era un
resourcedevuelto porftp_connect(). A partir de PHP 8.1 es un objetoFTP\Connection, pero el código no cambia — simplemente se pasa el valor que devuelveftp_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 useftp_rmdir()— y el directorio debe estar vacío primero, así que elimine su contenido (puede listarlo conftp_nlist()) antes de borrarlo. - Las rutas relativas dependen del directorio actual. Un nombre simple como
report.txtse resuelve respecto al directorio de trabajo actual del servidor. Prefiera rutas absolutas (/uploads/report.txt), o establezca el directorio explícitamente conftp_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.