Como faço para usar o PHP CLI para automatizar FTP quando eu não tenho acesso a FTP nativo do PHP lidar?

votos
0

Eu estou escrevendo um script de automação em um servidor de produção que, entre outras coisas, precisa pegar uma lista de arquivos remotos via FTP (FTP é a única opção para interagir com o sistema de arquivos remoto) e seletivamente baixá-los.

Por que eu não posso usar wrappers FTP nativas do PHP

Este é um servidor de produção em um ambiente muito frágil. Eu estou escrevendo-lo usando PHP CLI, pois a maioria dos scripts de automação existentes são escritos desta forma. No entanto, embora eu tenha um muito nova instalação PHP 5.1.2, não sou capaz de recompilar-lo com --with-ftp, e essa opção não está habilitado.

As opções restantes

Então, minhas opções são para se conectar, pegar minha lista de arquivos e baixar seletivamente usando shell_exec () ou as funções php_filesystem usando um fluxo de FTP e as funções do sistema de arquivos nativo do PHP.

Infelizmente, eu não sou capaz de encontrar bons exemplos de código de cada um. Quando tento função shell_exec usando comandos de FTP, o programa trava, presumivelmente porque estadias controle no shell uma vez que eu abrir o prompt de FTP.

$ftp_connect_command = ftp -v -n $bl_ftp_host;
$ftp_login_command = user $bl_ftp_user $bl_ftp_password;
$ftp_bye_command = bye;

$ftp_connect_response = shell_exec($ftp_connect_command);
// this never executes, because it hangs here waiting for a return to shell
$ftp_login_response = shell_exec($ftp_login_command);

Ou, eu imagino o fluxo de maneira base para fazer isso seria:

$ftp_path = ftp://$bl_ftp_user:$bl_ftp_user@$bl_ftp_host/;
$stream_options = array('ftp' => array('overwrite' => false));
$context = stream_context_create();
if ($dh = opendir($ftp_path, $context))
{
    while (filename = readdir($dh))
    {
        print($filename);
    }
}

Mas eu não tenho certeza se este é considerado um método confiável.

Alguém pode fornecer amostras de código mostrando como capturar uma lista de diretórios e download de arquivos por um desses métodos?

Publicado 19/05/2009 em 21:18
fonte usuário
Em outras línguas...                            


2 respostas

votos
2

Aparentemente, wordpress usa pemftp para FTP puro-PHP (em sistemas compilado sem suporte FTP)

Respondeu 19/05/2009 em 22:57
fonte usuário

votos
0

Você já olhou para a biblioteca nativa PHP FTP? http://us2.php.net/ftp

Respondeu 19/05/2009 em 21:24
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more