Dee 0 Denunciar post Postado Janeiro 12, 2010 A pergunte é simples. Como envio arquivos locais para uma pasta no FTP ? Estou usando a função ftp_put(), mas sempre dá esse erro. Warning: ftp_put(C:\Documents and Settings\web01.SALCAM.000\Desktop\tabela.xls) [function.ftp-put]: failed to open stream: No such file or directory in D:\web\LocalUser\dominio\www\ftp.php on line 13 Agora o código: <?php $ftp_server = "ftp.dominio.com.br"; $ftp_user = "user"; $ftp_pass = "senha"; $file = 'C:\Documents and Settings\web01.dominio.000\Desktop\tabela.xls'; $remote_file = 'novo/'; $conn_id = ftp_connect($ftp_server) or die("Conexão não pode ser Realizado para $ftp_server"); $login_result = ftp_login($conn_id, $ftp_user, $ftp_pass); if (ftp_put($conn_id, $remote_file, $file, FTP_BINARY)) { echo "Upload Enviado com Sucesso do arquivo: $file\n"; } else { echo "Aconteceu um problema enquanto fazia o Upload do arquivo: $file\n"; } ?> Compartilhar este post Link para o post Compartilhar em outros sites
Vinicius Cruz 1 Denunciar post Postado Janeiro 13, 2010 Onde é a linha 13? Ele não está encontrando o arquivo ou diretório Compartilhar este post Link para o post Compartilhar em outros sites
Dee 0 Denunciar post Postado Janeiro 13, 2010 Eu postei o erro no meu post anterior, a linha é óbvia. ¬¬ WARNING FTP_PUT(), Logo o erro é na função. Compartilhar este post Link para o post Compartilhar em outros sites
felipe_rr 0 Denunciar post Postado Janeiro 13, 2010 na variavel $remote_file você naum deve colocar a pasta pra onde ela vai, e sim o novo nome do arquivo, e se for o caso, adicionar o diretorio Compartilhar este post Link para o post Compartilhar em outros sites
Dee 0 Denunciar post Postado Janeiro 13, 2010 Beleza. Já testei com isso. Porém o arquivo tem que ter no FTP primeiro. Já coloquei. Eu até consegui fazer o Upload. Mas vai com 0Kb. Vai com caracteres diferentes quando é um arquivo xls. Sei lá! Compartilhar este post Link para o post Compartilhar em outros sites
Vinicius Cruz 1 Denunciar post Postado Janeiro 13, 2010 Peguei seu code (ou do manual: http://www.php.net/m...on.ftp-put.php) e executei sem problemas. Enviei um arquivo que estava na mesma pasta do arquivo que faz o upload. Coloque o caminho do arquivo relativo e não esqueça de definir o nome do arquivo que será gravado no $remote_file, pois só está definido o diretório. Compartilhar este post Link para o post Compartilhar em outros sites
João Batista Neto 448 Denunciar post Postado Janeiro 13, 2010 Senhores, não se esqueçam da regra n⁰ 2: 02ª - Comportamento e bons modos - Evite entrar em discussões que não lhe dizem respeito. - Evite palavras de baixo calão (palavrões). - Caso encontre alguma irregularidade e tenha disponibilidade, por favor, comunique ao moderador responsável pela área. - Evite discussões pessoais em público. Caso tenha algo a discutir com alguém, faça em particular. - Leia o tópico inteiro tal como todos os posts antes de responder, para evitar responder algo redundante ou fora de contexto. Discutir no tópico não vai fazer o problema se resolver. Compartilhar este post Link para o post Compartilhar em outros sites
Dee 0 Denunciar post Postado Janeiro 13, 2010 Alguém POSTA algo então que ajude. Já li a documentação do ftp_put(). Quero saber como que envia um arquivo LOCAL, de um ENDEREÇO do meu COMPUTADOR para o FTP. $file = ""; // O que eu coloco aqui ? $remote_file = ""; // E aqui ? ftp_put($conn_id, $remote_file, $file, FTP_BINARY); // Aqui eu coloco FTP_BINARY ou FTP_ASCII ? Compartilhar este post Link para o post Compartilhar em outros sites
João Batista Neto 448 Denunciar post Postado Janeiro 13, 2010 Dee, já tentou alocar espaço para o seu arquivo ou usar fput em vez de put ? $file = 'C:\Documents and Settings\web01.dominio.000\Desktop\tabela.xls'; $remote = 'novo/tabela.xls'; if ( ( $ftph = ftp_connect( 'ftp.dominio.com.br' ) ) !== false ){ if ( ftp_login( $ftph , 'user' , 'senha' ) ){ if ( is_file( $file ) ){ if ( is_readable( $file ) ){ if ( ftp_alloc( $ftph , filesize( $file ) ) ){ if ( ( $fh = fopen( $file , 'r' ) ) !== false ){ if ( ftp_fput( $ftph , $remote , $fh , FTP_BINARY ) ){ echo 'Arquivo enviado com sucesso.'; } else echo 'Não foi possível enviar o arquivo.'; fclose( $fh ); } else echo 'Não foi possível abrir o arquivo de origem.'; } else echo 'Não foi possível alocar espaço no servidor.'; } else echo 'Não temos permissão de leitura no arquivo de origem'; } else echo 'Arquivo de origem não existe.'; } else echo 'Não foi possível autenticar.'; ftp_close( $ftph ); } else echo 'Não foi possível conectar.'; Compartilhar este post Link para o post Compartilhar em outros sites
Dee 0 Denunciar post Postado Janeiro 13, 2010 Tentei, mas não da forma que você mostrou. Mas o ftp_fput() não é para um arquivo aberto ? Como isso no meu caso ? Depois vou fazer o que você fez. Não faço agora porquê a KingHost está fora do ar. DE NOVO! ¬¬ Compartilhar este post Link para o post Compartilhar em outros sites
João Batista Neto 448 Denunciar post Postado Janeiro 13, 2010 Mas o ftp_fput() não é para um arquivo aberto ? Exatamente, perceba no fragmento que enviei q é feita a abertura do arquivo com fopen. Compartilhar este post Link para o post Compartilhar em outros sites
Dee 0 Denunciar post Postado Janeiro 13, 2010 É verdade. Você abre ele. E qual a diferença de eu alocar o espaço e não alocar ? A minha dúvida era o endereço do arquivo no PC. Onde eu colocava. E porquê não estava funcionando, sendo que o endereço estava certo. Porquê no exemplo que está no Manual, não tem endereço nem nada, só o nome do arquivo. Daí eu fiquei na dúvida de onde ele estava pegando o arquivo. Compartilhar este post Link para o post Compartilhar em outros sites
Vinicius Cruz 1 Denunciar post Postado Janeiro 13, 2010 Quero saber como que envia um arquivo LOCAL, de um ENDEREÇO do meu COMPUTADOR para o FTP. $file = ""; // O que eu coloco aqui ? $remote_file = ""; // E aqui ? Cara, fiz assim e foi normalmente. http://localhost/ftp.php Na pasta onde está o ftp.php, criei um teste.txt $file = "teste.txt"; $remote_file = "public_html/teste.txt"; Mantive inclusive o FTP_BINARY Enviou normalmente. Faz esse teste simples pra ver Compartilhar este post Link para o post Compartilhar em outros sites
João Batista Neto 448 Denunciar post Postado Janeiro 13, 2010 E qual a diferença de eu alocar o espaço e não alocar ? Alguns servidores exigem isso, outros não suportam alocação. Como você estava tendo problemas, temos que testar as possibilidades, afinal, não tenho como saber qual é o caso do seu servidor de FTP. Nota: Muitos servidores FTP não suportam esse comando. Esses servidores podem retorna um código de falha (FALSE) indicando que o comando não é suportado ou um código de sucesso (TRUE) para indicar que pre-alocação não é necessário e o cliente deve continuar como se a operação tivesse sucedido. Por isso, talvez seja melhor usar essa função apenas em servidores que requerem pre-alocação explicitamente. O fragmento que eu enviei para você, funcionou ? Caso não, exibiu alguma mensagem ? Compartilhar este post Link para o post Compartilhar em outros sites
Dee 0 Denunciar post Postado Janeiro 13, 2010 Então. Para saber se funciona o fragmento que você mandou preciso que o meu FTP funcione. Mas a KingHost está fora. E meu site está hospedado no servidor de lá. Portanto, só quando voltar poderei testar. E meu FTP não precisa de alocação de espaço e as nunca tive problemas com permissões também. Compartilhar este post Link para o post Compartilhar em outros sites
João Batista Neto 448 Denunciar post Postado Janeiro 13, 2010 E meu FTP não precisa de alocação de espaço e as nunca tive problemas com permissões também. Caso o primeiro não funcione, tente esse (sem alocação de espaço) tentando entrar em modo passivo: $file = 'C:\Documents and Settings\web01.dominio.000\Desktop\tabela.xls'; $remote = 'novo/tabela.xls'; if ( is_file( $file ) ){ if ( is_readable( $file ) ){ if ( ( $fh = fopen( $file , 'r' ) ) !== false ){ if ( ( $ftph = ftp_connect( 'ftp.dominio.com.br' ) ) !== false ){ if ( ftp_login( $ftph , 'user' , 'senha' ) ){ if ( ftp_pasv( $ftph , true ) ) echo 'Entrando em modo passivo.' , PHP_EOL; if ( ftp_fput( $ftph , $remote , $fh , FTP_BINARY ) ){ echo 'Arquivo enviado com sucesso.'; } else echo 'Não foi possível enviar o arquivo.'; } else echo 'Não foi possível autenticar.'; ftp_close( $ftph ); } else echo 'Não foi possível conectar.'; fclose( $fh ); } else echo 'Não foi possível abrir o arquivo de origem.'; } else echo 'Não temos permissão de leitura no arquivo de origem'; } else echo 'Arquivo de origem não existe.'; Compartilhar este post Link para o post Compartilhar em outros sites
Dee 0 Denunciar post Postado Janeiro 13, 2010 Teste os dois. Os dois deram, "Arquivo de Origem não encontrado". E os endereços estão corretos. Testei. :s Compartilhar este post Link para o post Compartilhar em outros sites
Vinicius Cruz 1 Denunciar post Postado Janeiro 13, 2010 Já testou com endereço relativo? Compartilhar este post Link para o post Compartilhar em outros sites
Dee 0 Denunciar post Postado Janeiro 13, 2010 Como assim endereço relativo ? Compartilhar este post Link para o post Compartilhar em outros sites
felipe_rr 0 Denunciar post Postado Janeiro 13, 2010 Dee, o problema está no caminho, ele não pode conter espaços. Compartilhar este post Link para o post Compartilhar em outros sites