Tipo,
Buenas tardes.

Esta característica de PHP ya es conocida por muchas personas, pero si este no es el caso, intentaré ayudar a aquellos que aún no conocen esta poderosa característica de PHP, que es la integración con servidores mediante el protocolo FTP, que nos permite transferir archivos entre servidores.

Conexión al servidor

public function conectarFTP()
{

    $servidor = 'ftp.servidor.com.br'; // Endereço
    $usuario = 'usuario_ftp'; // Usuário
    $senha = 'senha_ftp'; // Senha
    $porta = 21; // Porta padrão
    $timeout = 9000; // Tempo em segundos para encerrar a conexão caso não haja resposta


    $ftp = ftp_connect( $servidor, $porta, $timeout ); // Retorno: true ou false
    if ( !$ftp )
    {
        return false;
    }


    $login = ftp_login( $ftp, $usuario, $senha ); // Retorno: true ou false
    if ( !$login )
    {
        return false;
    }


    return $ftp;

}

Enviando archivos

public function enviarArquivosPorFTP( $strArquivoLocal, $strArquivoRemoto )
{

    $ftp = $this->conectarFTP();
    if ( !is_resource( $ftp ) )
    {
        return false;
    }


    if ( !is_file( $strArquivoLocal ) )
    {
        echo "<br/>Arquivo de origem '{$strArquivoLocal}' não existe!";
        return false;
    }


    // Alterna o modo de conexão para PASSIVO. No modo passivo, as conexões de dados são iniciadas pelo cliente, ao invés do servidor. Pode ser necessário se o cliente estiver atrás de um firewall.
    ftp_pasv( $ftp, true );

    
    // Faz o upload do arquivo no modo BINÁRIO (Deve ser FTP_ASCII ou FTP_BINARY.)
    $envio = ftp_put( $ftp, $strArquivoRemoto, $strArquivoLocal, FTP_BINARY ); // Retorno: true / false


    if ( $envio )
    {
        echo "<br/>Arquivo '{$strArquivoLocal}' enviado para o FTP como '{$strArquivoRemoto}'!";
    }
    else
    {
        echo "<br/>Falha ao enviar o arquivo {$strArquivoLocal} para o FTP!";
        
        ftp_close( $ftp ); // Fecha a conexão com o FTP
        return false;
    }


    ftp_close( $ftp ); // Fecha a conexão com o FTP


    return true;


}

Descargando archivos

public function baixarArquivosPorFTP( $strArquivoRemoto, $strArquivoLocal )
{

    $ftp = $this->conectarFTP();
    if ( !is_resource( $ftp ) )
    {
        return false;
    }


    // Alterna o modo de conexão para PASSIVO. No modo passivo, as conexões de dados são iniciadas pelo cliente, ao invés do servidor. Pode ser necessário se o cliente estiver atrás de um firewall.
    ftp_pasv( $ftp, true );

    
    // Faz o download do arquivo no modo BINÁRIO (Deve ser FTP_ASCII ou FTP_BINARY.)
    $download = ftp_get( $ftp, $strArquivoLocal, $strArquivoRemoto, FTP_BINARY ); // Retorno: true / false


    if ( $download )
    {
        echo "<br/>Arquivo '{$strArquivoRemoto}' baixado com sucesso do FTP para '{$strArquivoLocal}'";
    }
    else
    {
        echo "<br/>Falha ao baixar o arquivo {$strArquivoRemoto} do FTP!";
        
        ftp_close( $ftp ); // Fecha a conexão com o FTP
        return false;
    }


    ftp_close( $ftp ); // Fecha a conexão com o FTP


    return true;


}

Listado de archivos

public function listarArquivosPorFTP( $strDiretorio, $strBusca )
{

    $ftp = $this->conectarFTP();
    if ( !is_resource( $ftp ) )
    {
        return false;
    }


    // Alterna o modo de conexão para PASSIVO. No modo passivo, as conexões de dados são iniciadas pelo cliente, ao invés do servidor. Pode ser necessário se o cliente estiver atrás de um firewall.
    ftp_pasv( $ftp, true );


    // Altera o diretório atual para "/arquivos/fotos/"
    ftp_chdir($ftp, "/arquivos/fotos/");
    

    // Lista os arquivos na forma de array()
    $arquivos = ftp_nlist($ftp, ".");
    
    
    ftp_close( $ftp ); // Fecha a conexão com o FTP


    return $arquivos;


}

Todavía tenemos la función. ftp_rawlist para enumerar archivos en FTP en detalle, mostrando permisos, fechas, etc.

Ejemplo:

$saida = ftp_rawlist($ftp, '/');
var_dump($saida);

El ejemplo anterior mostrará algo como esto:

array(3) {
  [0]=>
  string(65) "drwxr-x---   3 vincent  vincent      4096 Jul 12 12:16 public_ftp"
  [1]=>
  string(66) "drwxr-x---  15 vincent  vincent      4096 Nov  3 21:31 public_html"
  [2]=>
  string(73) "lrwxrwxrwx   1 vincent  vincent        11 Jul 12 12:16 www -> public_html"
}

¡Y eso es todo! ¡Hasta la próxima a todos!