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.
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.
😕 Poxa, o que podemos melhorar?
😃 Boa, seu feedback foi enviado!
✋ Você já nos enviou um feedback para este texto.