[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: загрузка больших файлов
_Dimarik__
Проблема. на строке:
$src = imagecreatefromjpeg($fromPhoto); //Создает изображение JPEG из файла
выскакивает ошибка:
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 28672 bytes) in C:\wamp\www\class.field_file.php on line 108
Размер jpg-картинки 14,2 метра.
При загрузке я прописал:
if ($_FILES["filename"]["size"] > 5*1024*1024)	
die ("Фотография не была загружена. Размер файла превышает 5 Мб.");

да и к тому же в .htaccess прописано:
php_value upload_max_filesize 40M
php_value post_max_size 40M

с какого фига не хватает памяти? и почему не вылезло die?



Спустя 21 минута, 40 секунд (22.08.2010 - 19:16) _Dimarik__ написал(а):
ЕСЛИ ЧТО, ВОТ САМА ФУНУКЦИЯ ЗАГРУЗКИ
   public function checkAndUpload($nameOfFileID, $nameOfPhoto='1')
{
if ($_FILES["filename"]["size"] > 5*1024*1024)
die ("Фотография не была загружена. Размер файла превышает 5 Мб.");
if($this->is_required)
{
// Проверяем не пусто ли оно
if(empty($_FILES["$this->name"]["tmp_name"]))
{
exit ("Фотография не была загружена.");
}
}

//Проверка на корректность загрузки файла
if(!empty($_FILES["$this->name"]["tmp_name"]))
{
//Извлекаем из имени файла его расширение
$ext = strtolower(strrchr($_FILES["$this->name"]["name"], "."));
//Разрешаем загружать только *.jpg, *.jpeg
$extentions = array(".jpg", ".jpeg");
$imageArray = getimagesize($_FILES["$this->name"]["tmp_name"]);
//($imageArray[0] > 0) && ($imageArray[1] > 0) - высота и ширина > 0
if((in_array($ext, $extentions)) && ($imageArray[0] > 0) && ($imageArray[1] > 0) && ($imageArray[2] == 2))
{
//если фотографию загружаем в первый раз, то создаём папку
if ($nameOfPhoto == 1)
{
@mkdir("photos/$nameOfFileID/");
@mkdir("photos/$nameOfFileID/small/");
}
//название фотографии
$this->nameOfPhoto = $nameOfPhoto.".jpg";


if(copy($_FILES["$this->name"]["tmp_name"],"photos/$nameOfFileID/".$this->nameOfPhoto))
{
echo "Фотография успешно загружена.<br>";
$this->smallPhoto("photos/$nameOfFileID/", $this->nameOfPhoto,1);
$this->smallPhoto("photos/$nameOfFileID/", $this->nameOfPhoto,2);
mysql_query("UPDATE userlist SET NumberOfPhotos=NumberOfPhotos+1 WHERE id=$nameOfFileID;");
}
else
exit ("<div style=\"padding-left:250px; color:red; font-size: 18px;\">Возникли проблемы при загрузке. Фотография не была загружена.</div>");

}
else
exit ("<div style=\"padding-left:250px; color:red; font-size: 18px;\">Вы можете загружать только фотографии с разрешением *.jpg, *.jpeg.</div>");

}
}


$this->smallPhoto("photos/$nameOfFileID/", $this->nameOfPhoto,1);
$this->smallPhoto("photos/$nameOfFileID/", $this->nameOfPhoto,2);
это уменьшение фотографии. именно в этих функциях и происзодит ошибка.
вот на этом месте:
$src = imagecreatefromjpeg($fromPhoto); //Создает изображение JPEG из файла

Спустя 9 минут, 49 секунд (22.08.2010 - 19:25) waldicom написал(а):
Самому скрипту памяти не хватает... что-то типа memory_limit

Спустя 59 минут, 11 секунд (22.08.2010 - 20:25) _Dimarik__ написал(а):
что-то я не понял.... это как? я же написал
php_value upload_max_filesize 40M
php_value post_max_size 40M
или это другая ошибка? как исправить?

Спустя 8 минут, 20 секунд (22.08.2010 - 20:33) _Dimarik__ написал(а):
а почему не вылезло die?ведь должно было остановиться выполнение скрипта! я ведь чётко прописал
if ($_FILES["filename"]["size"] > 5*1024*1024)
die ("Фотография не была загружена. Размер файла превышает 5 Мб.");
причём это условие в самом начале проверяется. а ошибка вылазит в конце. при вызрове другой фуцнкции из функции checkAndUpload()

Спустя 2 минуты, 42 секунды (22.08.2010 - 20:36) waldicom написал(а):
Цитата (_Dimarik__ @ 22.08.2010 - 19:25)
или это другая ошибка? как исправить?

Повторюсь:
Цитата
Самому скрипту памяти не хватает... что-то типа memory_limit

Ключевое слово:
memory_limit. Это настройка такая

Спустя 7 минут, 57 секунд (22.08.2010 - 20:44) _Dimarik__ написал(а):
в .htaccess прописал php_value memory_limit 100M
итог ошибка осталась. только числа в ней изменились
Fatal error: Allowed memory size of 104857600 bytes exhausted (tried to allocate 7168 bytes) in C:\wamp\www\class.field_file.php on line 108

Спустя 2 минуты, 58 секунд (22.08.2010 - 20:47) waldicom написал(а):
104857600 bytes = xxx M ? Если правильно умножишь 1024*1024*100, то поймешь, в чем проблема

Спустя 9 минут, 30 секунд (22.08.2010 - 20:56) _Dimarik__ написал(а):
данный размер памяти в 100 метров исчерпан (пытается распределить 7168 байт)
увеличил размер памяти до 200. но это уже извращение! откуда берутся такие числа????
я всего лишь 14-метровую фотку загружал. ну, допустим, была сделана её копия. в итоге 28 метров.
Но самое интересное состоит в том, почему die не сработал!

Спустя 10 минут, 45 секунд (22.08.2010 - 21:07) _Dimarik__ написал(а):
всё. этот вопрос снят.
if ($_FILES["$this->name"]["size"] > 5*1024*1024)
die ("Фотография не была загружена. Размер файла превышает 5 Мб.");
вот ошибка

Спустя 5 месяцев, 3 дня, 16 часов, 9 минут, 22 секунды (26.01.2011 - 14:16) Гость_Александр написал(а):
ini_set('memory_limit', '64M'); // увеличиваем размер оперативки для работы с изображениями, а то крупных картинок не загрузишь
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.