• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

silvamouro

Erro no upload porque?

10 mensagens neste tópico

Dá-me sempre o seguinte erro: Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 9088 bytes) in C:\Inetpub\vhosts\....\receber.php on line 12

K a linha é esta : $src_img = imagecreatefromjpeg($nome);

Alguem me pode dizer o que esta mal na função?

<form id="upload" name="form1" method="post" action="receber.php" enctype="multipart/form-data">
  <table width="300" border="0" cellpadding="0" cellspacing="0">  
    <tr>
      <td class="texto">Foto</td>
      <td><input type="file" name="foto" id="foto" style="width:200px" class="campoform" /></td>
    </tr>
    <tr>
      <td width="140" height="20" class="texto"><div align="left"><br />
      </div></td>
      <td width="160">
        <div align="right">
          <input type="submit" name="submit" id="submit" value="Enviar" />
        </div></td>
    </tr>
  </table>
</form>


<?

function thumb($nome, $destino, $new_w = "100", $new_h = "100") {

$system = explode(".",$nome);
if (preg_match("/jpg|jpeg/",$system[1])){
	$src_img = imagecreatefromjpeg($nome);
}
if (preg_match("/png/",$system[1])){
	$src_img = imagecreatefrompng($nome);
}
$src_img = imagecreatefromjpeg($nome);
$old_x = imageSX($src_img);
$old_y = imageSY($src_img);

	$thumb_w = $new_w;
	$thumb_h = $new_h;


        $dst_img=ImageCreateTrueColor($thumb_w,$thumb_h);
        imagecopyresampled($dst_img,$src_img,0,0,0,0,$thumb_w,$thumb_h,$old_x,$old_y);

if (preg_match("/png/",$system[1])){
	imagepng($dst_img,$destino);
} else {
	imagejpeg($dst_img,$destino);
}
imagedestroy($dst_img);
imagedestroy($src_img);
}

$id = 1;
$path = "imagens/";  
if($_FILES['foto']['name'] != "") {
$tipo1 = explode("/", $_FILES['foto']['type']);
$ext1 = strtolower($tipo1[1]);
if($ext1 == "pjpeg") { $ext1 = "jpg"; }
if($ext1 != "jpg") {
	$error = "Apenas aceite JPG.!<br>";
} else {

	$img1 = $id .".jpg";
	$save1 = $path . $img1;
	move_uploaded_file($_FILES['foto']['tmp_name'], $save1);
	$file1 = $path . "/thumbnail/miniatura" . $img1;
	thumb($save1, $file1);
}
}



?>

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tens um limite na configuração do php.ini. Tens que aumentar a quota de memória que podes utilizar.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não é ja aumentei... Continua a dar esse erro! já coloquei a 30 megas! Podes testar ai?

É que o mais engraçado ele faz o upload da foto em grande para o servidor ao tentar fazer o tumbnail é que não faz....

Tens um limite na configuração do php.ini. Tens que aumentar a quota de memória que podes utilizar.

Tens um limite na configuração do php.ini. Tens que aumentar a quota de memória que podes utilizar.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

o erro diz que tas a usar 32 MB, por isso tás a usar ainda mais. O teu script deve tar a utilizar muita memória.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Battousai  impossivel so estou a utilizar isto no script mais nada... a imagem é de 2 Megas! no php.ini tenho para 32 megas!

o erro diz que tas a usar 32 MB, por isso tás a usar ainda mais. O teu script deve tar a utilizar muita memória.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Battousai  impossivel so estou a utilizar isto no script mais nada... a imagem é de 2 Megas! no php.ini tenho para 32 megas!

pá só te posso dizer pelo que vejo, aquilo está a usar mais que 32 megas, não são só 32 megas! As causas para isso podem ser várias como código mal optimizado, ou serviços a correr por trás.

e tu tás a trabalhar com imagens de 2 mb, mas tás a replicar várias vezes a mesma imagem para a memória.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Battousai  desculpa lá a minha ignorancia pois comevcei a pouco tempo a trabalhar com php onde estou a fazer varias vezes replicas para a memoria?

pá só te posso dizer pelo que vejo, aquilo está a usar mais que 32 megas, não são só 32 megas! As causas para isso podem ser várias como código mal optimizado, ou serviços a correr por trás.

e tu tás a trabalhar com imagens de 2 mb, mas tás a replicar várias vezes a mesma imagem para a memória.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Na função thumb tás a criar pelo menos 3 imagens novas, além da imagem do upload que fizes-te e ainda não fizes-te unlink() sobre ela. Isto sem contar com todas as manobras que lhe fazes ( resize, cortar, colar ), envolve custos de memória.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Battousai  utilizas algum sistema de upload que eu possa ver?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

epa eu tenho um sistema de upload e de manipulamento de imagens, mas era complicado estar a pôr aqui, por isso vou meter só uma funçãozita que te pode ajudar para fazer o básico.

function handleRom(&$file,$destDir){
$filename = secure_filename(utf8_decode($file['name']));
        $path = $destDir.'/'.$filename;

if(file_exists($path))
	return 0;

if( copy( $file['tmp_name'], $path ) ){

	$fileStats = array(
		'deposit' => $path,
		'name' => $filename,
		'size' => round($file['size']/1024,2)
	);
	unlink($file['tmp_name']);
	return $fileStats;

}else
                return 1;
}

também recomendo evitares usar funções pregmatch. Usa strpos em vez disso, pois é mais rápida.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora