Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

laurolopes

erro ao usar ftp_put

Recommended Posts

Esse erro parou quando indiquei o caminho certo para o salvamento do arquivo enviado..... isso acontece porque ele não consegue ahcar o diretporio que você expecificou.....

 

O seu problema com certeza está aqui

 

$status = ftp_put($conn, '/public_html/restrito/.$arqName', $arqTemp, FTP_ASCII);

É aí mesmo,e o pior é que tentei de tudo,mudei o caminho para todos os possíveis e continua aí o problema...

Pra matar minha curiosidade,vou te explicar uma coisa aí me diz se tem alguma coisa a ver...eu tenho um site,e to testando esse upload em um subdiretório do site.Eu criei uma conta de ftp dentro desse site e estou usando ele para estes testes.Quando criei a conta de ftp,a pasta que foi criada no ftp foi jogada pra dentro do public_html que é onde estão todas as pastas e arquivos que fazem parte do site,será que essa confusão tem alguma coisa relacionada com o meu problema???

A tarde vou entrar em contato com o pessoal do servidor e ver se resolvo isso.Assim que eu tiver uma resposta mando uma resposta pra você.

Num tenho nem como agradecer.Nem imagina como me ajudou.Muito obrigado.Se precisar de alguma coisa tamo aê!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Essa questão das sub-paginas eu também tenho no servidor aqui, se não me engano isso é padrão de servers que usam o cPanel......Esse upload pra mim não está funcional ainda porque não estou consegui recuperar os dados da session pra jogar os arquivos para uma pasta com o nome do login de quem está enviando....

Compartilhar este post


Link para o post
Compartilhar em outros sites

pelo que percebi você está complicando algo muito simples

 

o problema é a estrutura dos arquivos do sistema

 

 

na primeira linha do script, coloque isso:

 

echo realpath('.'); exit;

Compartilhar este post


Link para o post
Compartilhar em outros sites

pelo que percebi você está complicando algo muito simpleso problema é a estrutura dos arquivos do sistemana primeira linha do script, coloque isso:

echo realpath('.'); exit;
Hinom,valeu pela força,mas...o erro acaba mas os arquivos não são enviados...Porque será???Mostrou o caminho onde estáo script php e não para onde os arquivos deveriam ser enviados...

Compartilhar este post


Link para o post
Compartilhar em outros sites

laurolopes, isso que postei não é a solução. é apenas uma dica pra depurar o script

echo realpath('.'); exit;
retorna o caminho físico do arquivo php em questão.qual o caminho que apareceu na tela ?sugeri isso porque parece que o problema está nisso:

$status = ftp_put($conn, '/public_html/restrito/'.$arqName, $arqTemp, FTP_ASCII);Se puder me explica o que tem que ser colocado em '/public_html/restrito/'.$arqName e no $arqTemp porque acho que to interpretando esses parâmetros errado...

escopo de FTP_PUT()

ftp_put(PHP 4, PHP 5)ftp_put — Envia um arquivo para o servidor FTPDescriçãobool ftp_put ( resource $ftp_stream, string $remote_file, string $local_file, int $mode [, int $startpos] )ftp_put() grava um arquivo local em um servidor FTP. Parâmetrosftp_streamO identificador da conexão FTP. remote_fileO caminho para o arquivo remoto. local_fileO caminho para o arquivo local. modeO modo de transferência. Deve ser FTP_ASCII ou FTP_BINARY. startposValores de retornadoRetorna TRUE em caso de sucesso ou FALSE em falhas.

ftp_put ( 1, 2, 3, 4 )1 -> O-STREAM-DA-CONEXÃO2 -> CAMINHO-FÍSICO-DENTRO-DO-SERVIDOR-ONDE-O-ARQUVO-SERÁ-UPLOADEADO3 -> O-CAMINHO-DO-ARQUVO-QUE-SERÁ-ENVIADO4 -> O-TIPO-DE-CODIFICAÇÃO ( BINARY, ASCII.. )

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hinom no remote_file e local_file eu devo estar colocando algo errado,não é possivel. Se for possivel dê um exemplo simplezinho de como devo preencher esse campos,pq acho que coloquei todas as possibilidades.É possivel o erro estar no servidor? Obrigado pela força.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Lauro, a linha para envio do arquivo está exatamente assim?

PHP
$status = ftp_put($conn, '/public_html/restrito/.$arqName', $arqTemp, FTP_ASCII);

 

Note que há um ".", que deve estar causando essa confusão toda :)

Verifique também qual o diretório que o usuário tem acesso. Colque o trecho abaixo antes desta linha do envio do arquivo.

 

PHP
echo ftp_pwd($conn);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Anderson Mello e Hinom,mto obrigado pelo empenho de vcs e pela força.Infelizmente tentei de várias maneiras corrigir o problema q expus aqui e depois de várias tentativas surgiam novos problemas,agora estou com um código um pouquinho mais enxuto e queria saber se podem me ajudar neste tb.

O problema deste é em relação a tamanho de arquivo,quando são arquivos pequenos eles são enviados sem problemas,mas o negócio é arquivo com mais de 10Mb,não envia,e eu já eliminei o tamanho do arquivo e o tempo de execução e mesmo assim os arquivos maiores não são enviados.

Dêem uma olhadinho no código por favor e vejam se encontram algum erro.Obrigado.

 

NESSA PRIMEIRA PARTE É O QUE EXECUTA

 

PHP
<?

set_time_limit(0);

include "config_upload.php";

$nome_arquivo    = $_FILES[arquivo][name];

$tamanho_arquivo = $_FILES[arquivo][size];

$local_temp      = $_FILES[arquivo][tmp_name];

if (!empty($nome_arquivo)) {

    if (($sobre_escrever == "nao") && (file_exists("$caminho_certo/$nome_arquivo")))

  die ("Arquivo já existe");

    if (($limitar_tam == "nao") && ($tamanho_arquivo > $tamanho))

  die ("O arquivo deve ter no máximo $tamanho Bytes");

   

    $ext_arquivo = strrchr($nome_arquivo , ".") ;

   

    if (($limitar_ext == "nao") && in_array($ext_arquivo, $ext))

  die ("Extenção (".$ext_arquivo.") inválida!");

    if (move_uploaded_file($local_temp , "$caminho_certo/$nome_arquivo")) {

     echo "<p align=center>O upload do arquivo <b>".$nome_arquivo."</b> foi concluído com sucesso!</p>";

  echo "<p align=center><a href=index.html>Novo upload</a></p>";

    }else

   echo "<p align=center>O arquivo não pode ser copiado para o servidor </p>";        

}else

    die ("Selecione o arquivo a ser enviado.");

?>

 

NESSA SEGUNDA PARTE É A CONFIGURAÇÂO DA PRIMEIRA

 

PHP
<?

// --- Configurações do upload ---

// -- Limitar extenções? sim ou nao --

$limitar_ext = "nao";

// -- extenções liberadas --

$ext = array(".jpeg", ".gif", ".png");

// -- caminho para onde vão os arquivos --

$caminho_certo = "/home/laurolop/public_html/teste/arquivos";

// -- Limitar o tamanho do arquivo enviado? sim ou nao --

$limitar_tam = "nao";

// -- se sim, tamanho liberado.. em Bytes --

$tamanho = "10000000000";

 

// -- se já existe o arquivo com o mesmo nome que você enviou, sobre escrever? sim ou nao --

$sobre_escrever = "nao";

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Lauro, que bom que está conseguindo resolver :)Porém, a questão do limite de envio (tamanho) de arquivos só pode ser configurada no PHP.INI, na diretiva upload_max_filesize. Se não puder ter acesso ao PHP.INI do servidor em que o sistema se encontrará em produção, é inviável tentar retirar o limite no formulário ou no processamento dele. Em alguns casos, é possível configurar via .htaccess. Contate seu provedor de serviços a respeito ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

segue a dica do andersonconselho,esse tipo de aplicação requer muito cuidado.você deve criar um controlador que verifique quedas de conexão e também suporte pra continuar um upload à partir do ponto de interrupção.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Lauro, que bom que está conseguindo resolver :)Porém, a questão do limite de envio (tamanho) de arquivos só pode ser configurada no PHP.INI, na diretiva upload_max_filesize. Se não puder ter acesso ao PHP.INI do servidor em que o sistema se encontrará em produção, é inviável tentar retirar o limite no formulário ou no processamento dele. Em alguns casos, é possível configurar via .htaccess. Contate seu provedor de serviços a respeito ;)

Anderson o problema do PHP.INI não está relacionado somente ao upload via HTTP,via FTP esse erro tb ocorre??? Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

não está relacionado somente ao upload via HTTP,via FTP esse erro tb ocorre???

boa observaçãotambém deve verificar se a conta de usuario do ftp possui restriçõeso que pode acontecer também é controle de tráfego e largura de banda. muitos servidores possuem um controlador que limita a capacidade de transferencia

Compartilhar este post


Link para o post
Compartilhar em outros sites

Anderson e Hinom, notei uma coisa muito estranha no meu sistema,além dos problemas que não estou conseguindo resolver (em relação ao tamanho do arquivo a ser enviado),eu vi que quando no coloco o caminho a pasta do ftp os arquivos não vão,mas quando coloco no caminho uma pasta que criei num subdominio do site os arquivos vão sem problema(a não ser em relação ao tamanho).O que é isso??? Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Achei um script em ASP pra fazer upload via ftp(Dundas Upload),mas não trabalho com ASP, e queria saber se tem como realmente fazer esse sistema em PHP sem alterar o php.ini? Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hinom,dei uma olhada em uma das respostas que escreveu aqui e tenho uma pergunta que talvez seja besta...Você escreveu isso: ftp_put ( 1, 2, 3, 4 )1 -> O-STREAM-DA-CONEXÃO2 -> CAMINHO-FÍSICO-DENTRO-DO-SERVIDOR-ONDE-O-ARQUVO-SERÁ-UPLOADEADO3 -> O-CAMINHO-DO-ARQUIVO-QUE-SERÁ-ENVIADO4 -> O-TIPO-DE-CODIFICAÇÃO ( BINARY, ASCII.. ) No item 3 to com uma dúvida.Como assim caminho físico de onde está o arquivo que vamos enviar?Tipo assim,se estiver no C da minha máquina em uma pasta exemplo,tenho que colocar C:/exemplo/.$source_file E no item 2 é o caminho que aparece quando usamos o "acho" Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.