$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__ написал(а):
ЕСЛИ ЧТО, ВОТ САМА ФУНУКЦИЯ ЗАГРУЗКИ
$this->smallPhoto("photos/$nameOfFileID/", $this->nameOfPhoto,1);
$this->smallPhoto("photos/$nameOfFileID/", $this->nameOfPhoto,2);
это уменьшение фотографии. именно в этих функциях и происзодит ошибка.
вот на этом месте:
$src = imagecreatefromjpeg($fromPhoto); //Создает изображение JPEG из файла
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
или это другая ошибка? как исправить?
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()
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
итог ошибка осталась. только числа в ней изменились
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 не сработал!
увеличил размер памяти до 200. но это уже извращение! откуда берутся такие числа????
я всего лишь 14-метровую фотку загружал. ну, допустим, была сделана её копия. в итоге 28 метров.
Но самое интересное состоит в том, почему die не сработал!
Спустя 10 минут, 45 секунд (22.08.2010 - 21:07) _Dimarik__ написал(а):
всё. этот вопрос снят.
if ($_FILES["$this->name"]["size"] > 5*1024*1024)
die ("Фотография не была загружена. Размер файла превышает 5 Мб.");
вот ошибка
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'); // увеличиваем размер оперативки для работы с изображениями, а то крупных картинок не загрузишь