ftp_delete()
La funzione ftp_delete() è una funzione PHP integrata usata per eliminare un file su un server FTP remoto. Accetta due parametri.
La funzione PHP ftp_delete()
ftp_delete() rimuove un singolo file da un server FTP remoto. È l'equivalente FTP di unlink() su un filesystem locale: si passa una connessione FTP aperta e il percorso del file da rimuovere, e la funzione restituisce un valore che indica se l'eliminazione è avvenuta con successo.
Questa pagina tratta la firma della funzione, il valore restituito, un esempio completo funzionante, la gestione degli errori e le insidie più comuni (eliminazione di directory, percorsi relativi vs. assoluti e permessi).
Sintassi
ftp_delete(FTP\Connection $ftp, string $filename): bool| Parametro | Tipo | Descrizione |
|---|---|---|
$ftp | FTP\Connection | L'identificatore di connessione restituito da ftp_connect() (o ftp_ssl_connect()). |
$filename | string | Il percorso del file da eliminare sul server remoto. |
Nota: Prima di PHP 8.1 il primo argomento era una
resourcerestituita daftp_connect(). A partire da PHP 8.1 è un oggettoFTP\Connection, ma il codice non cambia — si passa comunque il valore restituito daftp_connect().
Valore restituito
ftp_delete() restituisce:
true— il file è stato eliminato con successo.false— l'eliminazione non è riuscita (il file non esiste, mancano i permessi, il percorso è una directory oppure la connessione non è valida).
Poiché sia un percorso vuoto valido sia qualsiasi errore producono false, verificare sempre il risultato in modo esplicito anziché presumere il successo.
Un esempio completo
Prima si apre una connessione con ftp_connect(), ci si autentica con ftp_login(), si elimina il file e poi si chiude la sessione 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);Gestione degli errori
ftp_delete() emette un avviso PHP e restituisce false quando non riesce a rimuovere il file. Il controllo affidabile è il valore boolean restituito. Usare === per non confondere il risultato con un valore di connessione 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";
}Per sopprimere l'avviso predefinito e segnalare un messaggio personalizzato, anteporre @ alla chiamata:
<?php
if (@ftp_delete($ftp, $remotePath) === false) {
error_log("ftp_delete failed for: $remotePath");
}Insidie comuni
- Le directory non sono file.
ftp_delete()rimuove solo file. Per eliminare una directory usareftp_rmdir()— e la directory deve essere vuota prima, quindi eliminarne il contenuto (è possibile elencarlo conftp_nlist()) prima di rimuoverla. - I percorsi relativi dipendono dalla directory corrente. Un nome semplice come
report.txtviene risolto rispetto alla directory di lavoro corrente del server. Preferire percorsi assoluti (/uploads/report.txt) oppure impostare la directory in modo esplicito conftp_chdir(). - Rinominare invece di eliminare. Se è sufficiente spostare o archiviare un file, usare
ftp_rename()anziché eliminarlo e ricaricarlo. - Permessi. L'eliminazione fallisce silenziosamente (restituisce
false) quando l'utente FTP non dispone dei diritti di scrittura/eliminazione sulla directory di destinazione.
Riepilogo
ftp_delete() elimina un singolo file su un server FTP remoto e restituisce un boolean che indica il successo dell'operazione. Aprire e autenticare la connessione prima, passare alla modalità passiva per compatibilità, verificare il valore restituito in modo esplicito e ricorrere a ftp_rmdir() quando si deve rimuovere una directory. Per il set completo di operazioni FTP, consultare la guida PHP FTP.