W3docs

ftp_rmdir()

La función ftp_rmdir() de PHP elimina un directorio en un servidor FTP. Aprende su sintaxis, uso y manejo de errores con ejemplos prácticos.

Comprendiendo la función PHP ftp_rmdir()

La función ftp_rmdir() es una función integrada de PHP que elimina un directorio en un servidor FTP. En este artículo, analizaremos la función en detalle y te proporcionaremos una guía completa para usarla en tus proyectos PHP.

¿Qué es ftp_rmdir()?

La función ftp_rmdir() elimina un directorio en un servidor FTP. Es la contraparte de ftp_mkdir(), que crea uno.

Una restricción clave: solo funciona en directorios vacíos. Si el directorio todavía contiene archivos o subdirectorios, la llamada falla y devuelve false. Para eliminar un directorio no vacío, primero debes borrar su contenido (consulta el ejemplo recursivo a continuación).

La función acepta dos parámetros:

  1. ftp — la conexión FTP devuelta por ftp_connect() (y autenticada con ftp_login()).
  2. directory — la ruta del directorio a eliminar.

Devuelve true en caso de éxito y false en caso de error.

Sintaxis de ftp_rmdir()

La firma de la función ftp_rmdir() es:

ftp_rmdir(FTP\Connection $ftp, string $directory): bool

Ambos parámetros son obligatorios. Ten en cuenta que en PHP 8.1 y versiones posteriores la conexión es un objeto FTP\Connection; antes de PHP 8.1 era un resource. El parámetro directory es el nombre (relativo al directorio actual) o la ruta absoluta del directorio a eliminar.

Uso de ftp_rmdir()

Para usar la función ftp_rmdir(), primero debes establecer una conexión con el servidor FTP mediante la función ftp_connect(). Aquí tienes un ejemplo completo:

<?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);

Paso a paso: abrimos una conexión con ftp_connect() y la verificamos; iniciamos sesión con ftp_login(); eliminamos el directorio con ftp_rmdir() y mostramos el resultado; luego cerramos la conexión con ftp_close().

Eliminación recursiva de un directorio no vacío

Dado que ftp_rmdir() rechaza los directorios no vacíos, eliminar un árbol de carpetas implica borrar primero cada archivo y subdirectorio. Puedes listar el contenido con ftp_nlist(), eliminar archivos con ftp_delete() y recurrir en los subdirectorios:

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

Manejo de errores en ftp_rmdir()

Es importante gestionar los errores al usar ftp_rmdir(). Un retorno false indica que la eliminación falló — generalmente porque el directorio no está vacío, no existe o tu cuenta no tiene permisos suficientes. Siempre verifica el valor de retorno en lugar de asumir que la operación fue exitosa:

<?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);

Funciones FTP relacionadas

Conclusión

La función ftp_rmdir() elimina un directorio vacío en un servidor FTP, devolviendo true en caso de éxito y false en caso de error. Para eliminar un directorio que todavía contiene archivos, primero borra su contenido — por ejemplo, con el helper recursivo mostrado arriba. Combinada con una verificación cuidadosa del valor de retorno, es un bloque de construcción confiable para gestionar estructuras de directorios remotos desde PHP.

Práctica

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