Erro no move_uploaded_file + php 5

Iniciado por joaotime, 05 de Março de 2013, 11:57

tópico anterior - próximo tópico

joaotime

Ola Pessoal estou enfretando erro no move_uploaded_file sempre da erro tenho um servidor ubutun 12.04 com php 5 intalado e esta dando erro diz que nao pode mover , exite alguma coisa que tenho que habilitar no php.ini

Obrigado

Joao

zekkerj

Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

joaotime

vou postar a funcao  ?
function upload_file($nome_arq_original, $dir_destino, &$tmp_name, $prefixo)
{
   // 1 KB(yte) = 1 024 B(yte) | 1 MB = 1 024 KB = 1 048 576 B
   // Tamanho máximo do arquivo (em bytes)
   $config["tamanho"] = 1048576;
   // Largura máxima (pixels)
   $config["largura"] = 1024;
   // Altura máxima (pixels)
   $config["altura"]  = 768;

   $nome_arq_gerado = "";
   $copy = false;
   
   if ($nome_arq_original!="" and is_dir($dir_destino) and is_writable($dir_destino))
   {   
      //verificando se o tipo é válido                  
      if(!eregi("^image\/(pjpeg|jpeg|png|gif|bmp)$", $nome_arq_original["type"]))
      {
         echo "<br><b>".$nome_arq_original["name"]."</b> - tipo de arquivo não aceito! Envie novamente. Arquivos aceitos: jpg, jpeg, bmp, gif ou png.";
      }
      else
      {
         // Verifica tamanho do arquivo
         if($nome_arq_original["size"] > $config["tamanho"])
         {
            echo "<br>Arquivo tamanho inválido " . round($nome_arq_original["size"] / (1024 * 1024),2) . " MB";
         }
         else
         {
         
            //verificar se as dimesões são válidas
            //$tamanhos = getimagesize($arquivo["tmp_name"]);
            //if($tamanhos[0] > $config["largura"])
            //if($tamanhos[1] > $config["altura"])   
               
            //gerando nome para o novo arquivo *********print_r
            $nome_arq_gerado = $prefixo . date("YmdHis") . "_" . $nome_arq_original["name"];
            $nome_arq_gerado = stripslashes($nome_arq_gerado);
            $nome_arq_gerado = str_replace("'","",$nome_arq_gerado);
            $nome_arq_gerado = strtolower($nome_arq_gerado);
            $nome_arq_gerado = str_replace(" ","",$nome_arq_gerado);
            $nome_arq_gerado = RemoveAcentos($nome_arq_gerado);
                        
            $end_arq_copiar = str_replace('//','/',$dir_destino).$nome_arq_gerado;
         
            //getmod
            //chmod("", 0777);
            //$copy = copy($_FILES['URLImagem']['tmp_name'],$end_arq_copiar);            
            $copy = move_uploaded_file($tmp_name, $end_arq_copiar);
            $tmp_name = $nome_arq_gerado;
         
            /* thumbnail */      
            $imagesize = getimagesize($end_arq_copiar);
            $metadata['width'] = $imagesize['0'];
            $metadata['height'] = $imagesize['1'];
            $img_size = shrink_dimensions($metadata['width'],$metadata['height']);
            wp_create_thumbnail($end_arq_copiar, $img_size);
            //volta ao modo anterior
            
         } //fim if size
      } //fim if tipo certo
   } //fim if arquivo existe
   
   return $copy; //copy é booleano
}


onde passo
upload_foto($nome_arq_original, inadm_end_imgs_outadm, $nome_arq_temp, $prefixo_img);

sabendo que
$nome_arq_original = Nome do Arquivo Original
$inadm_end_imgs_outadm=..//..//imgs_up//
$nome_arq_temp = nome do arquivo
$prefixo_img= = "news_";

zekkerj

Rapaz, eu não sou programador php, sou só integrador. Sei lidar com os sintomas, mas se o problema for no código vc mesmo que vai ter que corrigir.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

joaotime

mais acredito que nao seja no codigo pois estou usando este mesmo codigo hospedado na localweb e funciona so no meu servidor interno que nao .
e por isto faco a pergunta sera que tenho que liberar mais alguma coisa ?

zekkerj

Então eu repito a pergunta: está movendo de onde pra onde?
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

joaotime

da pasta temporia para a pasta /var/www/os/img

zekkerj

E o usuário que roda o php tem permissão de escrita nessa pasta?
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

joaotime

vixi pegou em como sei se tem ou nao  ?

irtigor

Olhando as permissões do diretório, ex: ls -ld /var/www/os/img

joaotime

esta assim
drwxr-xr-x 3 nobody nogroup

zekkerj

Se eu nao me engano, o php é executado pelo usuário "www-data" (que é o usuário que executa o apache). Como o diretório pertence a "nobody/nogroup", tá explicado o erro.

Só me faça um favor... não cometa a sandice de dar escrita pública nesse diretório pra resolver o problema.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

joaotime

bom vamos como saber qual usuario o php roda e como dar permisao na pasta para o mesmo

irtigor

Se não modificou, é o usuário que executa o apache. Você também podia olhar algum arquivo criado por ele, ou rodar uma função como a posix_getuid.

joaotime

sim esta certo o usuario que roda o apache é www-data como faco para incluir ele na pasta ?