Manipulando arquivos através do FTP com PHP

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.

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.