ftp_rmdir()
A função ftp_rmdir() do PHP remove um diretório em um servidor FTP. Saiba como usá-la com exemplos práticos.
Entendendo a Função PHP ftp_rmdir()
A função ftp_rmdir() é uma função nativa do PHP que remove um diretório em um servidor FTP. Neste artigo, discutiremos a função em detalhes e forneceremos um guia completo para utilizá-la em seus projetos PHP.
O que é ftp_rmdir()?
A função ftp_rmdir() remove um diretório em um servidor FTP. Ela é o contraponto de ftp_mkdir(), que cria um diretório.
Uma restrição importante: ela funciona apenas em diretórios vazios. Se o diretório ainda contiver arquivos ou subdiretórios, a chamada falha e retorna false. Para remover um diretório não vazio, você deve excluir seu conteúdo primeiro (consulte o exemplo recursivo abaixo).
A função recebe dois parâmetros:
ftp— a conexão FTP retornada porftp_connect()(e autenticada comftp_login()).directory— o caminho do diretório a ser excluído.
Ela retorna true em caso de sucesso e false em caso de falha.
Sintaxe de ftp_rmdir()
A assinatura da função ftp_rmdir() é:
ftp_rmdir(FTP\Connection $ftp, string $directory): boolAmbos os parâmetros são obrigatórios. Note que no PHP 8.1 e versões posteriores a conexão é um objeto FTP\Connection; antes do PHP 8.1 era um resource. O parâmetro directory é o nome (relativo ao diretório atual) ou o caminho absoluto do diretório a ser removido.
Uso de ftp_rmdir()
Para usar a função ftp_rmdir(), você precisa primeiro estabelecer uma conexão com o servidor FTP usando a função ftp_connect(). Veja um exemplo 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 a passo: abrimos uma conexão com ftp_connect() e a verificamos; fazemos login com ftp_login(); removemos o diretório com ftp_rmdir() e exibimos o resultado; em seguida, fechamos a conexão com ftp_close().
Removendo um diretório não vazio recursivamente
Como ftp_rmdir() recusa diretórios não vazios, remover uma árvore de diretórios significa excluir todos os arquivos e subdiretórios primeiro. Você pode listar o conteúdo com ftp_nlist(), excluir arquivos com ftp_delete() e percorrer os subdiretórios recursivamente:
<?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);
}Tratamento de erros em ftp_rmdir()
É importante tratar erros ao usar ftp_rmdir(). Um retorno false significa que a remoção falhou — na maioria das vezes porque o diretório não está vazio, não existe, ou sua conta não possui permissão. Sempre verifique o valor de retorno em vez de assumir o sucesso:
<?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);Funções FTP relacionadas
ftp_mkdir()— criar um diretório.ftp_delete()— excluir um único arquivo.ftp_nlist()— listar o conteúdo de um diretório.ftp_chdir()— alterar o diretório de trabalho atual.ftp_pwd()— obter o caminho do diretório atual.
Conclusão
A função ftp_rmdir() remove um diretório vazio em um servidor FTP, retornando true em caso de sucesso e false em caso de falha. Para remover um diretório que ainda contém arquivos, limpe seu conteúdo primeiro — por exemplo, com o auxiliar recursivo acima. Combinada com verificações cuidadosas do valor de retorno, ela é um bloco de construção confiável para gerenciar estruturas de diretórios remotos a partir do PHP.