W3docs

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
ParametroTipoDescrizione
$ftpFTP\ConnectionL'identificatore di connessione restituito da ftp_connect() (o ftp_ssl_connect()).
$filenamestringIl percorso del file da eliminare sul server remoto.

Nota: Prima di PHP 8.1 il primo argomento era una resource restituita da ftp_connect(). A partire da PHP 8.1 è un oggetto FTP\Connection, ma il codice non cambia — si passa comunque il valore restituito da ftp_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 usare ftp_rmdir() — e la directory deve essere vuota prima, quindi eliminarne il contenuto (è possibile elencarlo con ftp_nlist()) prima di rimuoverla.
  • I percorsi relativi dipendono dalla directory corrente. Un nome semplice come report.txt viene risolto rispetto alla directory di lavoro corrente del server. Preferire percorsi assoluti (/uploads/report.txt) oppure impostare la directory in modo esplicito con ftp_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.

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.

Esercitazione

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