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:
ftp— la connessione FTP restituita daftp_connect()(e autenticata conftp_login()).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): boolEntrambi 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
ftp_mkdir()— crea una directory.ftp_delete()— elimina un singolo file.ftp_nlist()— elenca il contenuto di una directory.ftp_chdir()— cambia la directory di lavoro corrente.ftp_pwd()— ottiene il percorso della directory corrente.
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.