Comando copy! Ajuda! URGENTE!!

Enviada por Vitor Araujo 
Vitor Araujo
Comando copy! Ajuda! URGENTE!!
27 de February de 2003 às 11:21PM
Ae, quem puder me ajudar... estou com o php e o apache instalados aqui em casa, funcionando perfeitamente... estou tentando fazer um sistema de upload de arquivos, não consigo usar o comando copy, a mensagem de erro que eu recebo é:

HTTP wrapper does not support writeable connections

Imagino que possa ser algum erro de configuração do apache ou algo assim, mas não tenho nenhuma certeza... não vi referencia a esse erro em lugar nenhum da internet...
Agradeço quem puder me ajudar...
André de Castro Zorzo
Re: Comando copy! Ajuda! URGENTE!!
28 de February de 2003 às 02:17AM
qual a versão do Apache e PHP? mostra tbm o script se possível...
Vitor Araujo
Re: Comando copy! Ajuda! URGENTE!!
28 de February de 2003 às 03:39AM
Opa! eu esqueci desses detalhes...
- PHP 4.3.0 (com fileupload = on , no php.ini e fopenwrap = on tb(as unicas coisas que eu acho que tem a ver)
- Apache 1.3.22

O script:
$query = "INSERT INTO destaques VALUES (0,'".$_FILES['imagem']['name']."','".$_FILES['arquivo']['name']."','".$_POST['titulo']."','".$data."')";
$result = mysql_query($query);
//essa primeira parte funciona perfeitamente

move_uploaded_file($_FILES['arquivo']['tmp_name'],$limpo);
($limpo é o endereço completo http://localhost/pagina/arquivo.jpg - antes eu estava colocando só os diretórios e dava file not found)
(Meu register globals está OFF (eu prefiro assim)
É isso.... alguma idéia??
Vitor Araujo
Re: Comando copy! Ajuda! URGENTE!!
28 de February de 2003 às 03:40AM
só um erro..... não é move_uploaded_file, é copy... é que eu estava fazendo testes..e com o move_uploaded_files eu recebo o mesmo erro.
A linha fica assim:
copy($_FILES['arquivo']['tmp_name'],$limpo);
<b>Re: Comando copy! Ajuda! URGENTE!!</b>
28 de February de 2003 às 03:15PM
<HTML>Mais uma dúvida e algumas explicações de quem quebrou a cabeça com isto durante 3 meses.

DÚVIDA: Qual sistema operacional???

EXPLICAÇÕES:

O comando copy requer alguns detalhes que estão DIRETAMENTE relacionados com seu sistema operacional e a configuração do seu php.ini.

O comando deve ser usado sem o http. O caminho completo e:
Origem -> apenas o nome do arquivo.
Destino-> apenas o path do destino dentro do site.

Observações MUITO importantes:

1 - Se você estiver atraz de um proxy, qualquer upload maior que o segmento de informação do proxy será refugado.

2 - Vecê tem de configurar o tamanho máximo do upload em 4 lugares que sâo:

no php.ini
memory_limit = 128M
post_max_size = 64M
upload_max_filesize = 32M

na configuração do apache para o php (o nome e local deste arquivo varia de acordo com a instalação), tem uma setagem para a maior relação entre o tamanho do arquivo aceito por tranzação.
se você utiliza linux va em php.conf (/etc/httpd/conf.d/php.conf) e verifique LimitRequestBody setado para 524288 (512k). modifique este valor para o seu.

3 - Tem de haver um diretório provisório para o upload do arquivo configurado no php.ini e com permissão para escrita.

4 - O diretório destino da cópia tem de existir e estar com permissão para escrita.

Primeiro, verifique estas configurações e, caso o erro persista, entre em contato.</HTML>
Vitor Araujo
Re: Comando copy! Ajuda! URGENTE!!
28 de February de 2003 às 06:17PM
Olá! Antes de mais nada, obrigado pela ajuda, mas ainda não funcionou... eu estou rodando ele no Windows XP :( ....
Bem, eu já havia verificado o arquivo php.ini e já tinha configurado tudo, sem problemas.. agora, eu não encontrei nenhum arquivo php.conf, e a única referencia que encontrei para o LimitRequestbody, foi em um arquivo chamado httpd.h (mas ele estava em um comentário, lá existiam os comandos: DEFAULT_LIMIT_REQUEST_LINE e DEFAULT_LIMIT_REQUEST_FIELDSIZE).
Certo, em relação ao comando copy em si, eu tenho duas linhas no meu script:

$result = mysql_query($query);
$tmp = $_FILES['imagem']['tmp_name'];
$destino = "/destaques/img/".$_FILES['imagem']['name'];
copy($tmp,$destino);

// Nessa linha o destinho está indicado em um path (que existe) dentro do site, e retorna o erro: Warning: copy(/destaques/img/computador.txt) [function.copy]: failed to create stream: No such file or directory in c:\apache\htdocs\circo\temporario.php on line 31


A outra:
copy($_FILES['arquivo']['tmp_name'],"http://localhost/circo/destaques/".$_FILES['arquivo']['name']);
// Repare que agora o destino é completo, e o erro é :Warning: copy(http://localhost/circo/destaques/computador.txt) [function.copy]: failed to create stream: HTTP wrapper does not support writeable connections. in c:\apache\htdocs\circo\temporario.php on line 33

bem, eu já estou ficando meio que desesperado..eheheh eu tenho que entregar um site e não estou conseguindo fazer isso funcionar... apesar de meu objetivo ser o envio de imagens, eu estou fazendo os testes tb com um arquivo.txt de menos de 10k...
Bem, é isso..... espero que alguem saiba que problema é esse...
<b>Re: Comando copy! Ajuda! URGENTE!!</b>
28 de February de 2003 às 07:17PM
<HTML>Vou falar um pouco sobre solução de problemas para você ficar mais calmo.

Primeiro, vai por partes...

Faz o upload e, no script de retorno, SOMENTE prite na tela o nome provisório do seu arquivo. Se este der o retorno correto, va olhar no diretório temporário se o arquivo esta lá. Pelo erro que voc^3e reportou, não vai estar. Ai, começa pelo upload do arquivo que deve ser onde esta seu erro.

Se estas opções estiverem corretas, coloque (manualmente) um arquivo no temporário e crie um script para APENAS copia-lo para o destino que você quiser.

Depois junte as coisas. Por partes a cabeça fica mais fria e achamos a solução mais facilmente.

Olhe, não estou chamando ninguem de burro (ou coisa parecida). Esta é a forma que eu utilizo quando muitos cabelos brancos despontam na minha cabeça por causa de um problemão.

Faz isso ai e da um retorno.

Boa sorte</HTML>
Vitor Araujo
Re: Comando copy! Ajuda! URGENTE!!
01 de March de 2003 às 03:55AM
Jayr, muito obrigado pela sua ajuda, com certeza eu não acho que vc estava me chamando de burro nem nada, eu estou aprendendo php na marra, tem que ser assim mesmo... infelizmente eu nao vou ter tempo de testar o Script (vou viajar amanha e ja sao meia noit) até depois do carnaval.. assim que chegar posto aqui os resultados!
Valeu!
Vitor Araujo
Re: Comando copy! Ajuda! URGENTE!!
07 de March de 2003 às 03:11PM
Opa! Voltei... fiz os testes, olha o que eu consegui:
(testando, copiando o php.ini)
copy("C:\\Apache\\php-4.3.0-Win32\\php.ini","http://localhost/circo/destaques/php.ini");
--> Dá aquele mesmo erro.

copy("C:\\Apache\\php-4.3.0-Win32\\php.ini","c:\\uploads\\php.ini");
--> Funciona, o PHP.INI é copiado.

copy($_FILES['arquivo']['tmp_name'],"c:\\uploads\\".$_FILES['arquivo']['name']);
--> Funciona perfeitamente, copiou o arquivo selecionado no formulario pra pasta.

Bem, consegui chegar à conclusão de que realmente é algo com o Apache, pq o comando no php está funcionando... eu não sei se é uma questão de permissões na pasta (no mesmo arquivo eu coloquei a linha
chmod("./destaques", 0777);
entao nao acho que seja isso....
Hehe.. continuo perdido... mas vou tentando, quem sabe um dia sai...
Você precisa estar logado no PHPBrasil.com para poder enviar mensagens para os nossos fóruns.

Faça o login aqui.