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âmetro | Descrição |
|---|---|
$ftp | O 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 umresource. O uso é o mesmo em ambas as versões — você nunca o inspeciona diretamente, apenas o passa para as funçõesftp_*.
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 chamadaftp_*subsequente com ele falhará. - Passar um identificador inválido. Se
ftp_connect()falhar, retornafalse, não uma conexão. Chamarftp_close(false)lança umTypeErrorno 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().