Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Allowed memory size
Forum PHP.pl > Forum > Przedszkole
dresik
Witam,
mam problem ze zmniejszaniem zdjęć na serwerze, jeśli zdjęcie ma około 3mb i więcej to wyskakuje komunikat:

Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 12288 bytes) ...

błąd wyskakuje w lini, w której jest:

  1. if ($typ == ".jpg") {$img_src = imagecreatefromjpeg($in);}


przed tą linią jest wpis:

  1. $typ = img_typ($in);



który wywołuje funkcję:

  1. function img_typ($name){
  2. $name = strtolower(substr($name, -4, 4));
  3. if($name == '.jpg' OR $name == 'jpeg') {return ".jpg";}
  4. elseif($name == '.gif') {return ".gif";}
  5. elseif($name == '.png') {return ".png";}
  6. }



W php ini memory_limit zmieniłem z 16m na 64M ale to nie pomogło

Proszę o porady co trzeba zmienić lub ustawić ponieważ jest mi to niezbędne do pracy

Pozdrawiam,
wookieb
Zwiększ do 128 i sprawdź czy czasem to ustawienie nie jest nigdzie nadpisywane.
dresik
hhmm z ciągłym zwiększaniem będzie problem bo muszę pisać maila z prośbą o zmianę do tej firmy gdzie mam hosting, ponieważ nie mam dostępu do tych ustawień.

Chyba, że apach musi sobie ustawienia pobrać ponownie czy tam przeładować.

Niby po wpisaniu phpinfo(); pisze ze jest 64M
gothye
  1. ini_set('memory_limit','128M');
winksmiley.jpg
dresik
nie pomogło, dałem nawet 256M

i dalej ten sam komunikat

  1. Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 12288 bytes) in ...


próbowałem teraz zdjęcie które ma 1,37mb i dzieje się to samo ;/


proszę zobaczyć jeszcze na kod: (może jakieś stare funkcje użyte są w nim)
  1. function img_typ($name){
  2. $name = strtolower(substr($name, -4, 4));
  3. if($name == '.jpg' OR $name == 'jpeg') {return ".jpg";}
  4. elseif($name == '.gif') {return ".gif";}
  5. elseif($name == '.png') {return ".png";}
  6. }
  7.  
  8. function mini($in, $max_width, $max_height, $out, $jakosc){
  9. $typ = img_typ($in);
  10.  
  11. if ($typ == ".jpg") {$img_src = imagecreatefromjpeg($in);}
  12. elseif($typ == ".gif") {$img_src = imagecreatefromgif($in); }
  13. elseif($typ == ".png") {$img_src = imagecreatefrompng($in); }
  14.  
  15. $x = imagesx($img_src);
  16. $y = imagesy($img_src);
  17.  
  18.  
  19. if($x > $y) {
  20. $xr = ($x > $max_width)? $max_width/$x : 1;
  21. $yr = $xr;
  22. $move = 'y';
  23. }
  24. else {
  25. $yr = ($y > $max_height)? $max_height/$y : 1;
  26. $xr = $yr;
  27. $move = 'x';
  28. }
  29.  
  30. $new_x = $x*$xr;
  31. $new_y = $y*$yr;
  32.  
  33. $new_img = imagecreatetruecolOR($new_x, $new_y);
  34. $background = imagecolORallocate($new_img, 255, 255, 255);
  35.  
  36. imagefill($new_img, 0, 0, $background);
  37. imagecopyresampled($new_img, $img_src, 0, 0, 0, 0, $new_x, $new_y, $x, $y);
  38.  
  39. if ($typ == ".jpg") {imagejpeg($new_img, $out, $jakosc);}
  40. elseif($typ == ".png") { imagepng($new_img, $out, $jakosc);}
  41. elseif($typ == ".gif") { imagegif($new_img, $out); }
  42. } // end function mini
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.