Ir para conteúdo

POWERED BY:

Arquivado

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

Nitinha

Problema Upload de Imagens

Recommended Posts

Tenho um site na minha empresa que foi desenvolvido em 2009 e a alguns meses atrás ele parou de fazer o upload corretamente das imagens. A princípio ninguém havia mexido no código. Já alterei as permissões das pastas e arquivos relacionados aos uploads para 777 mas continua com problema, a imagem aparece como se o link estivesse quebrado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Envia o código do formulário e o código php de upload de arquivos.

Compartilhar este post


Link para o post
Compartilhar em outros sites
<?php
session_start();
include("includes/software_info.php");
include("includes/functions.php");
include("includes/db.php");
include("includes/date.php");
include("includes/image.php");
include("includes/permission.php");
?>
<?
//Recupera o Id do Pai
if(isset($_SESSION["id_galeria"]))
$id_galeria = $_SESSION["id_galeria"];

if(isset($_POST["acao"]) && $_POST["acao"]=="add") {

 //recuperando as variaveis do formulario
 $file = isset($_FILES["file"]) ? $_FILES["file"] : FALSE; 
 $subtitle = $_POST["subtitle"];
 $source = $_POST["source"];

 //array com os possiveis erros
 $erro = array();

 //flag para controlar os erros
 $flag = 0;

//nome do arquivo
$file_name = $file["name"];

if(filesize($_FILES["file"]["tmp_name"])==0) {
 	$erro[] = "Campo foto deve ser preenchido.";
	$flag = 1;
}
if(!eregi("^image\/(pjpeg|jpeg|png)$", $file["type"])) {
	$erro[] = "Arquivo em formato inválido. A imagem deve ser jpg, jpeg ou png. Envie outro arquivo.";
	$flag = 1;
} 

//abre conexao com o banco de dados
$conn = connect();

//nao tem erros
if($flag==0) {

	 //gera um nome único para o arquivo
	 $file_explode = explode(".",$file_name);
	 $file_name = renameFile($file_explode[0],$file_explode[1]);

	 //recupera o nome da galeria
	 $sqlQuery = execute("SELECT name FROM galeria_name WHERE id=$id_galeria");
	 $galeria_name = result($sqlQuery,0,"name");

	 //recupera o nome do diretorio
	 $dir_name = createDirectoryName($galeria_name);	 

	 //caminho absoluto do arquivo
	 $path = $PATH_FILES_UPLOADS . $dir_name . $file_name;

	 //caminho relativo
	 $relative_path = $PATH_FILES_UPLOADS . $dir_name;

	 //faz o upload do arquivo
	 move_uploaded_file($file["tmp_name"], $path);

	 //caminho das miniaturas
	 $path_mini = $PATH_FILES_UPLOADS . $dir_name . $DIRECTORY_NAME_THUMB_IMAGE;	

	 //cria a miniatura da imagem
	 resize($relative_path, $file_name, $SIZE_THUMB_IMAGE, $path_mini); 

	 //string sql para inserir o registro
	 $strSQL  = "INSERT INTO galeria_photo (id_galeria, photo,source,subtitle) ";
	 $strSQL .= "VALUES ('$id_galeria','$file_name','$source','$subtitle') ";

	 //executa a query sql
	 $sql = execute($strSQL);



	 //fecha conexao
	 close($conn);
}
}
?>
<html>
<head>
<title><? echo $title; ?></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta http-equiv="Pragma" content="no-cache">
<link href="design/css/adm.css" rel="stylesheet" type="text/css">
<script language="JavaScript1.2" src="includes/functions.js"></script>
</head>

<body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<table width="775" align="center" cellpadding="0" cellspacing="0">
 <tr> 
   <td> 
     <? include("user_info.php"); ?>
   </td>
 </tr>
 <tr> 
   <td> 
     <? include("navbar.php"); ?>
   </td>
 </tr>
 <tr> 
   <td> </td>
 </tr>
 <tr> 
   <td> 
     <? if(isset($erro) && sizeof($erro)) { ?>
     <table width="100%" border="0" cellspacing="0" cellpadding="5">
       <tr bgcolor="F5F3F3"> 
         <td width="20%" valign="top"> <div align="center"><img src="design/images/error.gif" width="32" height="32" vspace="5"></div></td>
         <td class="text_normal"><span class="text_required">Erro na execução 
           da operação Inserir</span><br> 
           <? foreach($erro as $err) {
		   echo $err . "<br>"; }
		?>
         </td>
       </tr>
     </table>
     <? } ?>
     <? if(isset($flag) && $flag==0) { ?>
     <table width="100%" border="0" cellspacing="0" cellpadding="5">
       <tr bgcolor="F5F3F3"> 
         <td width="20%" valign="top"> <div align="center"><img src="design/images/success.gif" width="32" height="32" vspace="5"></div></td>
         <td class="text_normal"><span class="text_required">Sucesso na execução 
           da operação Inserir</span><br>
           Produto <? echo $file_name; ?> criado com sucesso.</td>
       </tr>
     </table>
     <? } ?>
   </td>
 </tr>
 <tr> 
   <td class="tit_text"> </td>
 </tr>
 <tr> 
   <td class="tit_text">Produto » <? echo $_SESSION["nome"]; ?></td>
 </tr>
 <tr> 
   <td> <div align="left"><img src="design/images/dot_green.gif" width="775" height="1"></div></td>
 </tr>
 <tr> 
   <td><form action="" method="post" enctype="multipart/form-data" name="form">
       <table width="100%" border="0" cellspacing="0" cellpadding="5">
         <tr> 
           <td class="text_required"> </td>
           <td> </td>
         </tr>
         <tr> 
           <td width="30%" class="text_required"> <div align="right"><span class="star_required">* 
               </span>Foto:</div></td>
           <td><input name="file" type="file" class="input" id="file"></td>
         </tr>
         <tr> 
           <td class="text_required"> <div align="right" class="text_normal"> 
               Legenda:</div></td>
           <td><input name="subtitle" type="text" class="input" id="subtitle" value="<? if(isset($_POST["subtitle"])) echo $_POST["subtitle"]; ?>" size="50" maxlength="200"> 
           </td>
         </tr>
         <tr> 
           <td class="text_required"> <div align="right" class="text_normal"> 
               Descrição:</div></td>
           <td><textarea name="source" cols="60" rows="8" class="input"><? if(isset($_POST["source"])) echo $_POST["source"]; ?></textarea>
           <!--<input name="source" type="text" class="input" id="source" value="<? if(isset($_POST["source"])) echo $_POST["source"]; ?>" size="50" maxlength="100"> -->
             <input type="hidden" name="acao" value="add"> </td>
         </tr>
         <tr> 
           <td class="text_normal"> </td>
           <td> </td>
         </tr>
         <tr> 
           <td colspan="2" class="text_normal"><div align="right"> 
               <input name="button" type="button" class="botao" onClick="javascript:backPage('galeria_photo.php');" value="Voltar">
               <input type="submit" name="Submit2" value="Confirmar" class="botao">
             </div></td>
         </tr>
       </table>
     </form> </td>
 </tr>
 <tr> 
   <td><img src="design/images/dot_green.gif" width="775" height="1"></td>
 </tr>
 <tr> 
   <td> </td>
 </tr>
 <tr> 
   <td> 
     <? include("footer.php"); ?>
   </td>
 </tr>
</table>
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou entrar em contato com o local de hospedagem do site, não tinha pensado nesta hipótese.

 

Mas no caso de ser isso não apareceria nos erros como o motivo? Ou por não ser bem um erro só apareceria se este tivesse sido configurado?

Compartilhar este post


Link para o post
Compartilhar em outros sites

O servidor pode estar com a diretiva display_errors em off ou até error_reporting.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O servidor pode estar com a diretiva display_errors em off ou até error_reporting.

 

Entendi.

Verifiquei com o suporte de onde o site está hospedado e me informaram que não há limite. A não ser que tenham hackeado o sistema, não houve alteração no código. É provável então que o problema seja com eles? Já descrevi a situação para o suporte e estou no aguardo de uma resposta.

 

Atualizado: recebi um e-mail do suporte me informando que está havendo um erro em outra página nossa. Segue o código com o erro

 

$dir_name = createDirectoryName($produto);
	$path_absolut = $PATH_GALLERY_UPLOADS . $dir_name . $photo;
//a linha abaixo é a com erro V		
$img = "adm/" . $PATH_GALLERY_UPLOADS . $dir_name . $DIRECTORY_NAME_THUMB_IMAGE . $photo;
	   //echo "<td width='20%'><a href='adm/$path_absolut' rel='lightbox[fotos]' title='$source'><img src='$img' border='0'></a></td>";
	   //echo "<tr><td width='20%'><a href='#' >$produto</a></td></tr>";

E o erro que aparece é esse "PHP Notice: Undefined variable: photo in /www/www.site.com.br/web/adm/includes/functions.php on line 585, referer: http://www.site.com.br/produtos.php"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ele não está encontrando valor para $photo,

de onde vem essa variável?

 

Se ninguém mexeu no código talvez eles tenham mudado alguma configuração.

 

Em que versão do PHP o código foi feito? Já verificou se eles não atualizaram?

 

cria uma info.php com o código:

 

phpinfo();

 

e verifica as versões.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que eu achei sobre $photo

 

linha 483 - 493

		while($data=fetch_array($rs)) {
		$id_galeria_aux = $data["id_galeria"];
		$id = $data["id"];
		$galeria = $data["galeria"];
		$produto = $data["description"];
		$galeria_aux = $data["galeria"];
		$produto_aux = $data["description"];
		$medida = $data["medida"];
		$liga = $data["liga"];
		$peso = $data["peso"];
		$photo = $data["photo"];

 

linha 503 - 511

$rs2 = execute("$sql2");
			while($data2=fetch_array($rs2)) {
				$galeria_aux = $data2["galeria"];
				$produto_aux = $data2["description"];
				$medida = $data2["medida"];
				$liga = $data2["liga"];
				$peso = $data2["peso"];
				$photo = $data2["photo"];
			}

 

Usando o phpinfo consegui isso

PHP Version 5.3.2-1ubuntu4.10

 

acho que não posso passar o link que vai para esta página, né? Não sei quais informações ali eu posso passar e quais são necessárias.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ta difícil ein? Já tentou fazer um sistema de upload para testar?

Será que não vale a pena refazer essa parte?

 

se tiver como rodar ele em localhost para poder ir testando melhor com todos os erros e avisos ativos.

 

Teria que fuçar bem ai para achar o erro, se funcionava e parou do nada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente passar esse mesmo código para um servidor na sua máquina (wamp/xampp) e teste. Como você falou, já verificou permissões das pastas.

 

As vezes, pode ser algo até mais trivial, como permissão da pasta tmp (já tive esse problema, em que foi migrado o servidor, e o novo não possuía permissões para gera o arquivo temporário na pasta tmp :pinch: ), tamanho limite de file upload, nome de arquivo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O patch que ele busca contem a letra da partição onde encontra a pasta? por exemplo: E:\var\www\website\imagens\files ? pode ser que eles tenham trocado de servidor e acabou caindo em outro diretorio...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ta difícil ein? Já tentou fazer um sistema de upload para testar?

Será que não vale a pena refazer essa parte?

 

se tiver como rodar ele em localhost para poder ir testando melhor com todos os erros e avisos ativos.

 

Teria que fuçar bem ai para achar o erro, se funcionava e parou do nada.

 

É, estou pensando em refazer o sistema de upload mesmo.

 

Tente passar esse mesmo código para um servidor na sua máquina (wamp/xampp) e teste. Como você falou, já verificou permissões das pastas.

As vezes, pode ser algo até mais trivial, como permissão da pasta tmp (já tive esse problema, em que foi migrado o servidor, e o novo não possuía permissões para gera o arquivo temporário na pasta tmp   ), tamanho limite de file upload, nome de arquivo. 

 

A pasta temp já verifiquei, tamanho limite não é, pois ja usei varias imagens de teste de varios tamanhos diferentes, o nome acabei de fazer o teste, mas não parece ser isso. Vou tentar testar no meu pc mesmo como último teste antes de refazer o sistema.

 

Muito obrigada por todas as respostas, quando achar uma solução posto aqui.

 

Atualizado: achei o problema! Conforme o Gabriel Heming havia sugerido o problema era nos nomes dos arquivos, como tinham acentuações eles davam erro. Muito obrigada a todos pela ajuda!

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.