a b c 123 Postado Agosto 1, 2009 Denunciar Share Postado Agosto 1, 2009 Opao que está errado para setar a pasta do diretório em que vai o arquivo ?O código dá certinho, mas só se eu botar: $dir ="nomedapasta/";e com o $_GET["dir"] ele dá erro.mas eu dou o echo e ele aparece certinho, o que pode ser ? Obrigado<?php $dir = $_GET["dir"].'/'; echo $dir; if (isset($arquivo)) { $nome = rand(00,9999); if (is_uploaded_file($arquivo)) { move_uploaded_file($arquivo,$dir.$nome.$arquivo_name); echo "Enviado<br>"; } else { echo "erro"; } } ?> Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Raphael Machado Postado Agosto 1, 2009 Denunciar Share Postado Agosto 1, 2009 Tente Assim:<?php $dire = $_GET["dir"]; $dir = $dire . "/"; if (isset($arquivo)) { $nome = rand(00,9999); if (is_uploaded_file($arquivo)) { move_uploaded_file($arquivo,$dir.$nome.$arquivo_name); echo "Enviado<br>"; } else { echo "erro"; } } ?> Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 a b c 123 Postado Agosto 1, 2009 Autor Denunciar Share Postado Agosto 1, 2009 mesmo erro e tals, já tentei de diversas formas e dá sempre na mesma.:/ Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Cerock Postado Agosto 2, 2009 Denunciar Share Postado Agosto 2, 2009 Pode mandar o resultado deste echo aí? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Rafael Wapbrasil Postado Agosto 2, 2009 Denunciar Share Postado Agosto 2, 2009 Qual o erro que da? Coloca error_reporting(E_ALL); para ver se "reporta" algum erroOpa mais uma coisa, faça a verificaçao se o diretorio realmente existe e se tem permisao para poder ser salvo o arquivo nele. Se não existir crie ele Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Cerock Postado Agosto 2, 2009 Denunciar Share Postado Agosto 2, 2009 mas eu dou o echo e ele aparece certinho, o que pode ser ? ObrigadoO que aparece no echo.Ou melhor, qual o valor do $_GET["dir"]; ? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 a b c 123 Postado Agosto 2, 2009 Autor Denunciar Share Postado Agosto 2, 2009 O erro que dá é esse:Warning: move_uploaded_file(/955teste.htm) [function.move-uploaded-file]: failed to open stream: Permission denied in /home/arquivos.php on line 21Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpKhLbqX' to '/955teste.htm' in /home/arquivos.php on line 21o echo é:arqs/se eu setar direto o nome do diretório, ele vai certinho, sem problema algum, mas se eu pesso pra ele pegar o conteúdo da variável ele não vai.Tentei de diversas maneiras e nada. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 proust Postado Agosto 2, 2009 Denunciar Share Postado Agosto 2, 2009 Po galera...isso é problema de permissões.Leiam as mensagens do PHP com mais atenção.Seu código um pouco modificado:Linux (poderia ser feito tambem com as funcoes da posix...):<?php $dir = $_GET["dir"].'/'; echo $dir; if (isset($arquivo)) { if (is_uploaded_file($arquivo)) { $nome = rand(00,9999); if(is_dir($dir)) { if(!is_writeable($dir)) { if(!chmod($dir, 0777)) { $superUsuario = 'root'; /*mudar para o super usuario*/ $pwSuperUsuario = 'exemplo'; /*mudar para a senha do super usuario*/ $chmoded = (boolean)shell_exec('echo "'.$pwSuperUsuario.'" | sudo -u '.$superUsuario.' -S chmod 777 '.$dir.' && echo 1 || echo 0'); if(!$chmoded) die('Diretoria restrita.'); } } } else { echo 'O argumento \'', $dir, '\' não é uma diretoria.'; exit(1); } move_uploaded_file($arquivo,$dir.$nome.$arquivo_name); echo 'Enviado<br>'; } else { echo 'erro'; } } ?> Cross-Platform ('menos eficiente'): <?php $dir = $_GET["dir"].'/'; echo $dir; if (isset($arquivo)) { if (is_uploaded_file($arquivo)) { $nome = rand(00,9999); if(is_dir($dir)) { if(!is_writeable($dir)) { if(!chmod($dir, 0777)) { die('Diretoria restrita.'); } } } else { echo 'O argumento \'', $dir, '\' não é uma diretoria.'; exit(1); } move_uploaded_file($arquivo,$dir.$nome.$arquivo_name); echo 'Enviado<br>'; } else { echo 'erro'; } } ?> Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 a b c 123 Postado Agosto 2, 2009 Autor Denunciar Share Postado Agosto 2, 2009 porque que assim funcionaria ?Achei que fosse algo na variável, pois se ao invés de eu botar a variável eu botar direto o nome, vai perfeitamente. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 proust Postado Agosto 2, 2009 Denunciar Share Postado Agosto 2, 2009 Warning: move_uploaded_file(/955teste.htm) [function.move-uploaded-file]: failed to open stream: Permission denied in /home/arquivos.php on line 21 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 a b c 123 Postado Agosto 2, 2009 Autor Denunciar Share Postado Agosto 2, 2009 Ahm, saquei.valeu ae :D Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Rafael Wapbrasil Postado Agosto 2, 2009 Denunciar Share Postado Agosto 2, 2009 O erro de permisão é porque esta tentando salvar na pasta atual do script que não deve ter permissao, mais era para salvar dentro do diretorio especificado por $dir, segundo você $dir no echo da o valor correto mais na hora do move_upload não da. (estranho, tem certeza que ta fazendo corretamente?)<?php $dir = $_GET['dir']; if($dir == FALSE) die("Diretorio invalido"); $dir .= "/"; if (isset($arquivo)) { $nome = rand(00,9999); $destino = $dir . $nome . $arquivo_name; if (is_uploaded_file($arquivo)) { move_uploaded_file($arquivo,$destino); echo "Enviado<br>"; } else { echo "Erro ao salvar arquivo em <b>".$caminho."</b>"; } } ?> Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 a b c 123 Postado Agosto 2, 2009 Autor Denunciar Share Postado Agosto 2, 2009 ae o erro fica esse:/Warning: chmod() [function.chmod]: Operation not permitted in /home/pasta/arquivos2.php on line 19Diretoria restrita. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 proust Postado Agosto 2, 2009 Denunciar Share Postado Agosto 2, 2009 É problema de permissão sim.Pode ter certeza... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 a b c 123 Postado Agosto 2, 2009 Autor Denunciar Share Postado Agosto 2, 2009 Tenho sim.o diretório existe.agora testei com o seu código e apareceu: "diretório inválido".:/ Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Rafael Wapbrasil Postado Agosto 2, 2009 Denunciar Share Postado Agosto 2, 2009 Isto quer dizer que o seu formulario não está enviando nenhum campo com nome "dir" via get, talvez pode ta enviando via post ou talvez em outro nome.. Confere o seu formulario. Eu acho que esta enviando via post porque ate vem arquivo por upload Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 proust Postado Agosto 2, 2009 Denunciar Share Postado Agosto 2, 2009 abc...Tentou rodar o meu código de exemplo?Arruma o que o Wap falou (envia os dados direito)...e tenta rodar o meu. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 a b c 123 Postado Agosto 2, 2009 Autor Denunciar Share Postado Agosto 2, 2009 Mas para ver se está passando o $_GET ae eu escrevo um echoe ele aparece certinho. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 proust Postado Agosto 2, 2009 Denunciar Share Postado Agosto 2, 2009 Opa der...ai é windows?Se for eu não sei como é o esquema de permissões não. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Rafael Wapbrasil Postado Agosto 2, 2009 Denunciar Share Postado Agosto 2, 2009 não esta batendo... O if cai em FALSE eo echo da o nome do diretorio :S Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 a b c 123 Postado Agosto 2, 2009 Autor Denunciar Share Postado Agosto 2, 2009 tentei os códigos que me passaram também, e não foi. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Cerock Postado Agosto 2, 2009 Denunciar Share Postado Agosto 2, 2009 pqp, manda o arquivos.php completo pra dar 1 olhada... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 a b c 123 Postado Agosto 2, 2009 Autor Denunciar Share Postado Agosto 2, 2009 Aqui vai todo o código do arquivo "arquivos.php"<html><head><title>Upload</title></head><body><?php$dir1 = $_GET["dir"];$dir = $dir1 . '/';echo $dir;if (isset($arquivo)){$nome = rand(00,9999); if (is_uploaded_file($arquivo)){ move_uploaded_file($arquivo,$dir.$nome.$arquivo_name); echo "Enviado<br>";}else{ echo "erro";}}?><form action="arquivos.php" method="post" enctype="multipart/form-data"><table width="375" border="0" cellpadding="0" cellspacing="0"><tr> <td> <input type="file" name="arquivo"> </td></tr><tr> <td> <input type="submit" value="Enviar"> </td></tr></table></form></body></html> Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Cerock Postado Agosto 2, 2009 Denunciar Share Postado Agosto 2, 2009 Não tenho certeza, mas acho que o erro ta aqui:<form action="arquivos.php" method="post" enctype="multipart/form-data"> <table width="375" border="0" cellpadding="0" cellspacing="0"> <tr> <td> <input type="file" name="arquivo"> </td> </tr> <tr> <td> <input type="submit" value="Enviar"> </td> </tr> </table> </form> Se você quer pegar um valor pelo GET, não adianta colocar la na url: arquivos.php?dir=arqs e não colocar no action do form. Tente deixar o form assim: <form action="arquivos.php?dir=arqs" method="post" enctype="multipart/form-data"> <table width="375" border="0" cellpadding="0" cellspacing="0"> <tr> <td> <input type="file" name="arquivo"> </td> </tr> <tr> <td> <input type="submit" value="Enviar"> </td> </tr> </table> </form><form action="arquivos.php?dir=arqs" method="post" enctype="multipart/form-data">Poste o resultado.Obrigado, Cerock. :D Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Rafael Wapbrasil Postado Agosto 2, 2009 Denunciar Share Postado Agosto 2, 2009 Se você não conseguir resolver o problema agora.... Acho melhor estudar um pouco sobre formularios html e $_POST e $_GET Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 a b c 123 Postado Agosto 2, 2009 Autor Denunciar Share Postado Agosto 2, 2009 Consegui.valeu ae gente, era o que o cerock falou. Ali no form.:D Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
a b c 123
Opa
o que está errado para setar a pasta do diretório em que vai o arquivo ?
O código dá certinho, mas só se eu botar: $dir ="nomedapasta/";
e com o $_GET["dir"] ele dá erro.
mas eu dou o echo e ele aparece certinho, o que pode ser ? Obrigado
Link para o comentário
Compartilhar em outros sites
25 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.