W3docs

ftp_rmdir()

La funzione ftp_rmdir() di PHP rimuove una directory su un server FTP. Guida completa con esempi pratici e gestione degli errori.

Comprendere la funzione PHP ftp_rmdir()

La funzione ftp_rmdir() è una funzione PHP integrata che rimuove una directory su un server FTP. In questo articolo analizzeremo la funzione nel dettaglio e forniremo una guida completa per utilizzarla nei tuoi progetti PHP.

Cos'è ftp_rmdir()?

La funzione ftp_rmdir() rimuove una directory su un server FTP. È la controparte di ftp_mkdir(), che ne crea una.

Un vincolo fondamentale: funziona solo su directory vuote. Se la directory contiene ancora file o sottodirectory, la chiamata fallisce e restituisce false. Per rimuovere una directory non vuota è necessario eliminarne prima il contenuto (vedi l'esempio ricorsivo più avanti).

La funzione accetta due parametri:

  1. ftp — la connessione FTP restituita da ftp_connect() (e autenticata con ftp_login()).
  2. directory — il percorso della directory da eliminare.

Restituisce true in caso di successo e false in caso di errore.

Sintassi di ftp_rmdir()

La firma della funzione ftp_rmdir() è:

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

Entrambi i parametri sono obbligatori. Nota che in PHP 8.1 e versioni successive la connessione è un oggetto FTP\Connection; prima di PHP 8.1 era una resource. Il parametro directory è il nome (relativo alla directory corrente) o il percorso assoluto della directory da rimuovere.

Utilizzo di ftp_rmdir()

Per utilizzare la funzione ftp_rmdir(), è necessario prima stabilire una connessione al server FTP usando la funzione ftp_connect(). Ecco un esempio 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);

Passo dopo passo: apriamo una connessione con ftp_connect() e la verifichiamo; effettuiamo il login con ftp_login(); rimuoviamo la directory con ftp_rmdir() e mostriamo il risultato; infine chiudiamo la connessione con ftp_close().

Rimozione ricorsiva di una directory non vuota

Poiché ftp_rmdir() rifiuta le directory non vuote, rimuovere un albero di cartelle significa eliminare prima ogni file e sottodirectory. Puoi elencare il contenuto con ftp_nlist(), eliminare i file con ftp_delete() e ricorrere nelle sottodirectory:

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

Gestione degli errori in ftp_rmdir()

È importante gestire gli errori quando si utilizza ftp_rmdir(). Un valore di ritorno false indica che la rimozione è fallita — il più delle volte perché la directory non è vuota, non esiste o il tuo account non ha i permessi necessari. Controlla sempre il valore restituito anziché dare per scontato il successo:

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

Funzioni FTP correlate

Conclusione

La funzione ftp_rmdir() rimuove una directory vuota su un server FTP, restituendo true in caso di successo e false in caso di errore. Per rimuovere una directory che contiene ancora file, occorre eliminarne prima il contenuto — ad esempio con il metodo ricorsivo mostrato sopra. Combinata con un attento controllo del valore restituito, è un componente affidabile per gestire strutture di directory remote tramite PHP.

Pratica

Pratica
Qual è lo scopo della funzione ftp_rmdir() in PHP?
Qual è lo scopo della funzione ftp_rmdir() in PHP?
Was this page helpful?