Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Ошибка при загрузке картинки больше 200 кб - Fatal error: Allowed memory size of 41943040 bytes exhausted
 
 автор: ReZiStOr   (04.04.2008 в 00:30)   письмо автору
 
 

Собсно сабж вот пишет ошибку
Fatal error: Allowed memory size of 41943040 bytes exhausted (tried to allocate 2816 bytes)
Думал что не хватает оперативы на хосте. Но я попросил хостера увеличили до 40 мб
С фотографией віполняються следующие действия:
1) обрезка (если надо)
2) наложение водяного знака
3) создание преевью
если надо скину скрипт


ps что самое обидное на локалхосте все пашет и грузяться фотки свыше 10 метров


Пожалуйста подскажите может кто стыкался с такой проблемой

   
 
 автор: parczynski   (04.04.2008 в 01:44)   письмо автору
 
   для: ReZiStOr   (04.04.2008 в 00:30)
 

наверняка где-нибудь в PHP.ini есть директива которая отвечает за
максимальный размер загружаемых файлов upload_max_filesize
максимальный размер передаваемой инфы post_max_size
или максимальный размер используемой оп памяти memory_limit.
как правило upload_max_filesize устанавлевается в 2 метра. или в любом случае копайте в эту сторону

   
 
 автор: cheops   (04.04.2008 в 11:36)   письмо автору
 
   для: ReZiStOr   (04.04.2008 в 00:30)
 

Прикрипите скрипт к сообщению. Вероятно необходимо удалять неиспользуемую память при помощи imagedestroy() по мере выполнения скрипта.

   
 
 автор: ReZiStOr   (04.04.2008 в 14:00)   письмо автору
 
   для: cheops   (04.04.2008 в 11:36)
 


function upload_photo()
{
//загрузка файла на сервер
$fl=file("../upload/ind.txt");  // открываем файл в каком храниться порядковый номер загружаемой фото
$a=$fl[0];
for($i=0;$i<8;$i++) // организовываем цыкл ибо можно загрузить 8 фото сразу
{
if(isset($_FILES['file']['tmp_name'][$i]))
{
move_uploaded_file($_FILES['file']['tmp_name'][$i],'../temp_files/'.$_FILES['file']['name'][$i]);
};
// параметры файла
if ($_FILES['file']['type'][$i]=="image/jpeg" or $_FILES['file']['type'][$i]=="image/gif" or $_FILES['file']['type'][$i]=="image/png" or $_FILES['file']['type'][$i]=="image/jpg" or $_FILES['file']['type'][$i]=="image/pjpeg")
{
// если тп файла совпадает с тем что нам надо инкрементируем пор. номер с файла
$a++;
$file=$_FILES['file']['name'][$i];
$filedir="../temp_files/$file";
$size=getimagesize($filedir);
$width_image=$size[0];   // определяем высоту картинки
$height_image=$size[1];  // определяем ширину картинки
print$_FILES['file']['type'];


if($width_image>800 and $height_image>600)
{
$res = imagecreatetruecolor(800,600);
if ($_FILES['file']['type'][$i]=="image/jpeg"){$img = imagecreatefromjpeg("$filedir");};
if ($_FILES['file']['type'][$i]=="image/jpg"){$img = imagecreatefromjpeg("$filedir");};
if ($_FILES['file']['type'][$i]=="image/pjpeg"){$img = imagecreatefromjpeg("$filedir");};
if ($_FILES['file']['type'][$i]=="image/gif"){$img = imagecreatefromgif("$filedir");};
if ($_FILES['file']['type'][$i]=="image/png"){$img = imagecreatefrompng("$filedir");};
$logo = imagecreatefrompng("pictures/logo.png"); // логотип 
imagetruecolortopalette($img,true,255); // придаем цветности
imagecopyresampled($res,$img,
                  0,0,
                  0,0,
                  800,600,
                  imagesx($img),imagesy($img)); // обрезаем
                  imagecopy ($res,$logo,0,0,0,0,200,70); // налаживаем логотип
                  imagejpeg($res,"../upload/image$a.jpeg","100") or die("could not create image"); // сохраняем
                  $sql_stroka=$sql_stroka."*"."upload/image$a.jpeg";
 }else{ // если не больше 800 на 600 тогда не обрезаем
        $res = imagecreatetruecolor($width_image,$height_image);
        if ($_FILES['file']['type'][$i]=="image/jpeg"){$img = imagecreatefromjpeg("$filedir");};
          if ($_FILES['file']['type'][$i]=="image/pjpeg"){$img = imagecreatefromjpeg("$filedir");};
        if ($_FILES['file']['type'][$i]=="image/jpg"){$img = imagecreatefromjpeg("$filedir");};
    if ($_FILES['file']['type'][$i]=="image/gif"){$img = imagecreatefromgif("$filedir");};
    if ($_FILES['file']['type'][$i]=="image/png"){$img = imagecreatefrompng("$filedir");};
        $logo = imagecreatefrompng("pictures/logo.png");
        imagecopyresampled($res,$img,
                  0,0,
                  0,0,
                  $width_image,$height_image,
                  imagesx($img),imagesy($img));
                  imagecopy ($res,$logo,0,0,0,0,200,70);
                  imagejpeg($res,"../upload/image$a.jpeg","100") or die("could not create image");
                  $sql_stroka=$sql_stroka."*"."upload/image$a.jpeg";
                    };
                  // конец
// создание превью
$res1 = imagecreatetruecolor(120,120); // размером 120 на 120
if ($_FILES['file']['type'][$i]=="image/jpeg"){$img1 = imagecreatefromjpeg("$filedir");};
if ($_FILES['file']['type'][$i]=="image/pjpeg"){$img1 = imagecreatefromjpeg("$filedir");};
if ($_FILES['file']['type'][$i]=="image/jpg"){$img1 = imagecreatefromjpeg("$filedir");};
if ($_FILES['file']['type'][$i]=="image/gif"){$img1 = imagecreatefromgif("$filedir");};
if ($_FILES['file']['type'][$i]=="image/png"){$img1 = imagecreatefrompng("$filedir");};
$mask = imagecreatefrompng("pictures/border.png"); // рамка которуя налаживаеться на превью
$logo1 = imagecreatefrompng("pictures/logo1.png");
imagetruecolortopalette($img1,true,255); // придаем цветность
$green = imagecolorallocate($res1,136,203,44);
imagecopyresampled($res1,$img1,
                  0,0,
                  0,0,
                  120,120,
                  imagesx($img1),imagesy($img1));
imagecopy ($res1,$logo1,60,110,1,0,60,12);
imagecopy ($res1,$mask,0,0,0,0,120,120);

$trans = imagecolorat($res1,0,0); 
imagecolortransparent($res1,$trans);// указываем какой цвет будет прозрачным

imagepng($res1,"../upload/preiwiew/prw$a.png") or print"!"; // сохраняем файл
$sql_stroka_prw=$sql_stroka_prw."*"."upload/preiwiew/prw$a.png";
};

};
$f=fopen("../upload/ind.txt","w"); // перезаписываем порядковый номер 
$w=fwrite($f,$a);
$c=fclose($f);


// конец
};







Простите за стиль программрования пишу с мобильника

   
 
 автор: mihdan   (04.04.2008 в 17:07)   письмо автору
 
   для: ReZiStOr   (04.04.2008 в 14:00)
 

В конце кода
<?php
imagedestroy
($resl);
imagedestroy($res);
imagedestroy($logo);
imagedestroy($mask);
imagedestroy($logol);
?>

   
 
 автор: ReZiStOr   (04.04.2008 в 22:58)   письмо автору
 
   для: mihdan   (04.04.2008 в 17:07)
 

Не помогло пишет ошибку на 527 строке тоесть

imagetruecolortopalette($img,true,255);

если её закоментировать то пишет такую же ошибку только на этой строке
$res1 = imagecreatetruecolor(120,120);


полный бред какойто

   
 
 автор: cheops   (05.04.2008 в 11:55)   письмо автору
 
   для: mihdan   (04.04.2008 в 17:07)
 

>В конце кода
Вернее в конце итерации цикла for и добавить
<?php
  imagedestroy
($res);
  
imagedestroy($res1);
?>

   
 
 автор: ReZiStOr   (05.04.2008 в 13:13)   письмо автору
 
   для: cheops   (05.04.2008 в 11:55)
 

А я туда и вставил
Проблема в том что когда грузишь 8 картинок до 200 кб все нормально но когда 1 и больше 200 кб то вот трабл и не знаю как решит уже всех знакомых переспросил все отвечают что не знают и первый раз такое видят

   
 
 автор: ReZiStOr   (07.04.2008 в 03:24)   письмо автору
 
   для: ReZiStOr   (05.04.2008 в 13:13)
 

Лююди помоги плис

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования