Tutorial: Usando FTP com PHP

Aprenda como usar as funções do PHP para manipular conexões FTP (File Transfer Protocol). Fazer upload de arquivos, download de arquivos, deletar arquivos, abrir pastas, varrer pastas FTP usando PHP.

Por | @@faael Programação

Olá pessoal, nesse artigo irei abordar algumas funções para manipular arquivos através do FTP (File Transfer Protocol), como por exemplo: fazer a conexão com o servidor, enviar um arquivo, remover um arquivo ou diretório, entre outros. 

Tutorial: Usando FTP com PHP

 

Onde usar PHP + FTP?

O uso deste tutorial é vasto, fizemos um robô que extrai informações de um banco de dados e cria um SQL, envia por FTP para que outro sistema possa importar este SQL. Você pode fazer manipulação de qualquer tipo de arquivo, como subir fotos para o servidor, baixar backups automaticamente, entre uma infinidade de funções. O interessante é que você pode colocar um CRONJOB para fazer este serviço e automatizar algumas aplicações. A quantidade de coisas que se pode fazer com PHP + FTP é realmente absurda.

 

Iniciando com PHP + FTP:

Apesar de ser relativamente fácil de utilizar os métodos de FTP do PHP vamos aqui listar eles para tornar o nosso tutorial mais compreensível.

Função O que faz
ftp_alloc Aloca espaço para um arquivo a ser enviado para o servidor (uploaded)
ftp_cdup Muda para o diretório acima
ftp_chdir Muda o diretório atual em um servidor FTP
ftp_chmod Estabelece as permissões de um arquivo via FTP
ftp_close Fecha uma conexão FTP
ftp_connect Abre uma conexão FTP
ftp_delete Exclui um arquivo no servidor FTP
ftp_exec Solicita a execução de um comando no servidor FTP
ftp_fget Copia um arquivo do servidor FTP e salva em um arquivo aberto
ftp_fput Envia um arquivo aberto para um servidor php
ftp_get_option Obtém várias opções em tempo de execução da conexão FTP atual
ftp_get Copia um arquivo do servidor FTP
ftp_login Realiza o login em uma conexão FTP
ftp_mdtm Retorna a hora da ultima modificação no arquivo indicado
ftp_mkdir Cria um diretório
ftp_nb_continue Continua a receber/enviar um arquivo (sem bloquear)
ftp_nb_fget Obtém um arquivo de um servidor FTP e escreve-o para um arquivo aberto(sem bloquear)
ftp_nb_fput Grava um arquivo a partir de um arquivo aberto no servidor FTP (sem bloquear)
ftp_nb_get Obtém um arquivo do servidor FTP e escreve-o em um arquivo local (sem bloquear)
ftp_nb_put Grava um arquivo no servidor FTP (sem bloquear)
ftp_nlist Retorna a lista dos arquivos em um dado diretório
ftp_pasv Muda o modo passivo em on(ligado) ou off(desligado)
ftp_put Envia um arquivo para o servidor FTP
ftp_pwd Retorna o nome do diretório atual
ftp_quit Sinônimo de ftp_close
ftp_raw Envia um comando arbritário para o servidor FTP
ftp_rawlist Retorna uma lista detalhada dos arquivos em um diretório
ftp_rename Renomeia um arquivo ou diretório no servidor FTP
ftp_rmdir Remove um diretório
ftp_set_option Define opções diversas em tempo de execução
ftp_site Envia o comando SITE para o servidor
ftp_size Retorna o tamanho de um dado arquivo
ftp_ssl_connect Abre uma conexão SSL-FTP segura
ftp_systype Retorna o identificador do tipo do sistema do servidor FTP remoto

 

Definindo as informações

Vamos começar definindo as informações necessárias para realizar a conexão com o servidor FTP. Para isso irei criar um array() com o host, usuario e senha.

<?php
$dados = array(
    "host" => "ftp.faael.net",
    "usuario" => "faael",
    "senha" => "12345"
);
?>

Definidos os dados para realizar a conexão, vamos abrir a conexão com o servidor e fazer o login:

<?php
#Realizamos a conexão através da função ftp_connect() que recebe como parâmetro obrigatório o host do servidor, mas também se necessário a porta FTP, que como padrão é 21.

$fconn = ftp_connect($dados["host"]);

#Utilizamos a função ftp_login() para realizar o login no servidor, que recebe como parâmetro a conexão, usuário e senha.

ftp_login($fconn, $dados["usuario"], $dados["senha"]);
?>

Conectados no servidor FTP, podemos começar a manipulação de arquivos. Vamos começar enviando um arquivo local para o servidor FTP:

<?php
#Utilizamos a função ftp_put() para enviar o arquivo texto.txt, que está na raiz do servidor local, para a pasta public_html/ que está na raiz do servidor FTP. Passamos como parâmetro: a conexão, para onde o arquivo será copiado no servidor, o arquivo local que será copiado, modo de transferência.

ftp_put($fconn, "/public_html/texto.txt", "/texto.txt", FTP_BINARY);
?>

Para realizar o processo inverso, ou seja, copiar um arquivo do servidor FTP para o servidor local, utilizamos a seguinte função:

<?php
#Desta vez, utilizamos a função ftp_get() que irá copiar o arquivo texto.txt, que está na pasta public_html/ na raiz do servidor, para  a pasta raiz do servidor local com o nome texto.txt; Passamos como parâmetro: a conexão, para onde o arquivo será copiado localmente,  que arquivo será copiado do servidor, modo de transferência.

ftp_get($fconn, "/texto.txt", "/public_html/texto.txt", FTP_BINARY);
?>

Podemos também remover um arquivo ou um diretório:

<?php
#A função ftp_delete() remove um arquivo do servidor FTP, no caso iremos remover o texto.txt da pasta public_html/ do servidor.

ftp_delete($fconn, "/public_html/texto.txt");

#Utilizamos a função ftp_rmdir() para remover o diretório teste/ que está na raiz do servidor FTP.

ftp_rmdir($fconn, "/teste/");
?>

Há ainda várias outras funções para manipulação de arquivos, como:

<?php
#Renomeia um arquivo do servidor FTP, no caso, o arquivo texto.txt passa a chamar novotexto.txt

ftp_rename($fconn, "/texto.txt", "/novotexto.txt");

#Retorna o tamanho (em bytes) de um determinado arquivo, no caso, do arquivo texto.txt

ftp_size($fconn, "/texto.txt");

#Cria um novo diretório da raiz do servidor, nesse caso, o diretório novapasta/

ftp_mkdir($fconn, "/novapasta");

#Exibe todos os arquivos e pastas de um determinado diretório, com vários detalhes. Os valores são colocados em um array(), por isso utilizamos o laço foreach() para exibir os itens da raiz do servidor FTP.

$lista = ftp_rawlist($fconn, "/");

foreach ($lista as $item) 
{
    echo $item . "<br>";
}
?>

Depois de realizarmos todas as operações necessárias, precisamos fechar a conexão com o servidor FTP:

<?php
ftp_close($fconn);
?>

Podemos, através do PHP, realizar várias funcionalidades que um programa FTP, como o Filezilla, por exemplo, realiza. Você pode ver todas as funções disponíveis no manual do PHP. Bom pessoal, é isso. Espero que esse artigo tenha lhe ajudado, abraços.

Mais sobre: php, ftp, tutorial
Share Tweet
DESTAQUESRecomendadoMais compartilhados
Comentários
  • ASSINE NOSSA NEWSLETTER

    As melhores publicações no
    seu e-mail

  • Preencha para confirmar