W3docs

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:

  1. ftp — a conexão FTP retornada por ftp_connect() (e autenticada com ftp_login()).
  2. 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): bool

Ambos 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

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.

Prática

Prática
Qual é o propósito da função ftp_rmdir() no PHP?
Qual é o propósito da função ftp_rmdir() no PHP?
Was this page helpful?