W3docs

ftp_close()

A função ftp_close() é uma função nativa do PHP usada para encerrar uma conexão FTP. Recebe o identificador de conexão retornado por ftp_connect().

O que ftp_close() faz

ftp_close() encerra uma conexão FTP ativa que você abriu anteriormente com ftp_connect() (ou ftp_ssl_connect()). Ela libera o socket de rede e a sessão do lado do servidor para que nenhum dos lados mantenha a conexão aberta por mais tempo do que o necessário.

Você a chama assim que terminar a transferência de arquivos — após as operações com ftp_get(), ftp_put() ou ftp_nlist(). A função retorna true em caso de sucesso e false em caso de falha.

O PHP encerra a conexão FTP automaticamente quando o script termina, portanto um ftp_close() esquecido não vai deixar um socket aberto para sempre. Chamá-la explicitamente ainda é importante em scripts de longa duração (workers, consumidores de fila, loops que abrem muitas conexões), onde você deseja liberar a sessão do servidor imediatamente em vez de aguardar o término do script.

Sintaxe

ftp_close(FTP\Connection $ftp): bool
ParâmetroDescrição
$ftpO identificador de conexão retornado por ftp_connect() ou ftp_ssl_connect().

A partir do PHP 8.1, o identificador é um objeto FTP\Connection. No PHP 8.0 e anteriores era um resource. O uso é o mesmo em ambas as versões — você nunca o inspeciona diretamente, apenas o passa para as funções ftp_*.

Uso básico

Um ciclo completo de conectar → autenticar → trabalhar → fechar é assim:

<?php

// Open a connection to the FTP server
$ftp = ftp_connect('ftp.example.com');

// Authenticate
ftp_login($ftp, 'username', 'password');

// Download a file
ftp_get($ftp, 'local-copy.txt', 'remote-file.txt', FTP_BINARY);

// Always close the connection when you are done
ftp_close($ftp);

A ideia principal: cada ftp_connect() deve ser acompanhado de um ftp_close(), assim como todo arquivo aberto deve ser fechado.

Verificando o valor de retorno

ftp_close() retorna um boolean, portanto você pode confirmar que a conexão foi encerrada corretamente:

<?php

if (ftp_close($ftp)) {
    echo "Connection closed successfully.\n";
} else {
    echo "Failed to close the connection.\n";
}

Fechando com segurança usando try/finally

Se uma operação entre a conexão e o fechamento lançar uma exceção ou sair prematuramente, a linha ftp_close() pode nunca ser executada. Envolver o trabalho em um bloco try/finally garante que a conexão seja encerrada mesmo quando ocorrer um erro:

<?php

$ftp = ftp_connect('ftp.example.com');

try {
    ftp_login($ftp, 'username', 'password');
    ftp_get($ftp, 'local.txt', 'remote.txt', FTP_BINARY);
    // ... more operations that might fail ...
} finally {
    // Runs whether the try block succeeded or threw
    ftp_close($ftp);
}

Este é o padrão recomendado para código em produção: o bloco finally é o único responsável por liberar a conexão.

Erros comuns

  • Usar o identificador após encerrá-lo. Depois que ftp_close() é executada, o identificador é inválido. Qualquer chamada ftp_* subsequente com ele falhará.
  • Passar um identificador inválido. Se ftp_connect() falhar, retorna false, não uma conexão. Chamar ftp_close(false) lança um TypeError no PHP 8. Verifique a conexão antes de usá-la.
  • Chamá-la sem parâmetro. ftp_close() exige o identificador de conexão; não há valor padrão.

Resumo

ftp_close() encerra uma sessão FTP aberta por ftp_connect() e retorna true em caso de sucesso. Embora o PHP encerre a conexão ao final do script, chamar ftp_close() explicitamente — idealmente dentro de um bloco finally — mantém os scripts de longa duração organizados e libera a sessão do servidor assim que seu trabalho estiver concluído. Para explorar o restante do fluxo de trabalho, consulte ftp_connect(), ftp_login() e ftp_put().

Prática

Prática
Qual é a forma correta de usar a função ftp_close() em PHP?
Qual é a forma correta de usar a função ftp_close() em PHP?
Was this page helpful?