Classe FTP
Esta classe permite que arquivos sejam transferidos para um servidor remoto. Estes arquivos remotos, podem também ser movidos, renomeados e apagados. A classe FTP ainda inclui uma função de "espelhamento", que permite que um diretório local seja 100% recriado, remotamente, via FTP.
Nota: Os protocolos SFTP e SSL FTP não são suportados, apenas o FTP padrão.
Inicializando a Classe
Como a maioria das classes no Code Igniter, a classe FTP é inicializada em seu controller usando a função $this->load->library:
$this->load->library('ftp');
Uma vez carregada, o objeto estará disponível usando: $this->ftp
Exemplos de Uso
Neste exemplo, uma conexão é aberta com o servidor FTP e um arquivo local é lido e enviado em modo ASCII. As permissões de arquivo são configuradas em 755. Nota: Esta configuração de permissões requer o PHP 5.
$this->load->library('ftp');
$config['hostname'] = 'ftp.seu-site.com';
$config['username'] = 'seu-usuario';
$config['password'] = 'sua-senha';
$config['debug'] = TRUE;
$this->ftp->connect($config);
$this->ftp->upload('/local/path/to/meuarquivo.html', '/public_html/meuarquivo.html', 'ascii', 0775);
$this->ftp->close();
Neste exemplo, uma lista de arquivos é buscada no servidor.
$this->load->library('ftp');
$config['hostname'] = 'ftp.seu-site.com';
$config['username'] = 'seu-usuario';
$config['password'] = 'sua-senha';
$config['debug'] = TRUE;
$this->ftp->connect($config);
$list = $this->ftp->list_files('/public_html/');
print_r($list);
$this->ftp->close();
Neste exemplo, um diretório local é espelhado no servidor.
$this->load->library('ftp');
$config['hostname'] = 'ftp.seu-site.com';
$config['username'] = 'seu-usuario';
$config['password'] = 'sua-senha';
$config['debug'] = TRUE;
$this->ftp->connect($config);
$this->ftp->mirror('/path/to/myfolder/', '/public_html/meudiretorio/');
$this->ftp->close();
Referência da Função
$this->ftp->connect()
Conecte e logue-se em seu servidor FTP. As preferências de conexão são configuradas passando uma array para a função, ou então você pode armazená-las em um arquivo de configuração.
Aqui vai um exemplo monstrando como configurar suas preferências manualmente:
$this->load->library('ftp');
$config['hostname'] = 'ftp.seu-site.com';
$config['username'] = 'seu-usuario';
$config['password'] = 'sua-senha';
$config['port'] = 21;
$config['passive'] = FALSE;
$config['debug'] = TRUE;
$this->ftp->connect($config);
Configurando as preferências FTP em um arquivo
Se preferir, você pode armazenar suas preferências de FTP num arquivo config. simplesmente, crie um novo arquivo chamado ftp.php, e adicionar a array $config neste arquivo. Salve-o em config/ftp.php e ele será usado automaticamente.
Opções de conexão disponíveis:
- hostname - O FTP hostname. Geralmente algo como: ftp.algum-site.com
- username - O Usuário FTP.
- password - A senha FTP.
- port - O número da porta. É configurado como 21 por default.
- debug - TRUE/FALSE (boolean). Habilitar ou não o debugging para mostrar mensagens de erro.
- passive - TRUE/FALSE (boolean). Usar ou não o modo passivo. Ele é TRUE por default.
$this->ftp->upload()
Envia um arquivo ao seu servidor. Você deve fornecer o caminho local e o remoto, e também pode, opcionalmente, configurar o modo e permissões. Exemplo:
$this->ftp->upload('/local/caminho/para/meuarquivo.html', '/public_html/meuarquivo.html', 'ascii', 0775);
As opções de modo são: ascii, binário, e auto (o default). Se auto for usado, ele irá se basear na extensão do arquivo enviado.
As permissões estão disponíveis se você estiver rodando o PHP 5 e podem ser passadas como um valor octal no quarto parâmetro.
$this->ftp->rename()
Permite renomear um arquivo. Forneça o arquivo e caminho iniciais e os finais.
// Renomeia verde.html para azul.html
$this->ftp->rename('/public_html/teste/verde.html', '/public_html/teste/azul.html');
$this->ftp->move()
Lhe permite mover um arquivo. Forneça o caminho inicial e o final:
// Moverá o blog.html de "joe" para "fred"
$this->ftp->move('/public_html/joe/blog.html', '/public_html/fred/blog.html');
Nota: se o nome do arquivo de destino for diferente do inicial, ele será renomeado.
$this->ftp->delete_file()
Lhe permite apagar um arquivo. Forneça o nome e caminho do arquivo a ser apagado.
$this->ftp->delete_file('/public_html/joe/blog.html');
$this->ftp->delete_dir()
Permite apagar um diretório e todo o seu conteúdo. Forneça o caminho para o diretório seguido de uma barra inclinada.
Importante Tenha MUITO cuidado com esta função. Ela irá apagar recursivamente TUDO dentro do caminho fornecido, incluindo subdiretóris e todos os arquivos. Tenha certeza absoluta que seu caminho está correto. Experimente usar a função list_files() antes, para verificar se seu caminho está correto.
$this->ftp->delete_dir('/public_html/caminho/para/diretorio/');
$this->ftp->list_files()
Permite que você busque uma lista de arquivos no servidor e a retorne como uma array. Você deve fornecer o caminho para o diretório desejado.
$list = $this->ftp->list_files('/public_html/');
print_r($list);
$this->ftp->mirror()
Lê, recursivamente, um diretório local e tudo que ele contém (incluindo subdiretórios) e creia um espelhamento via FTP baseado nisto. Qualquer que seja estrutura de diretório, ela será recriada no servidor. Você deve fornecer o caminho inicial e o final:
$this->ftp->mirror('/caminho/para/meudiretorio/', '/public_html/meudiretorio/');
$this->ftp->mkdir()
Permite criar um diretório em seu servidor. Forneça o caminho final no diretório em quer deseja criar, seguido de uma barra invertida. As permissões podem ser passadas via um valor octal no segundo parâmetro (se você estiver usando o PHP 5).
// Cria um diretório chamado "buteco"
$this->ftp->mkdir('/public_html/buteco/', 0777);
$this->ftp->chmod()
Permite que você configure as permissões de arquivo. Forneça o caminho para o arquivo ou diretório:
// Chmod "buteco" to 777
$this->ftp->chmod('/public_html/buteco/', 0777);
$this->ftp->close();
Fecha a conexão com o servidor. É recomendado que você use isto ao terminar de enviar os arquivos.