2012-03-10 2 views
4

У меня есть следующие строки кода в начале функции:PHP из памяти, но почему?

$src_img=imagecreatefromjpeg($name); 

$name содержит полный путь на сервере к не-доступной публично папку, содержащую файл, который является 4.4MB JPG.

Обычно, когда эта проблема возникла, PHP нуждается в большем количестве памяти, чем выделено для открытия сжатого изображения, и выдача команды ini_set для поднятия члена на 128 МБ решает проблему. Однако в этом случае это не так. Я пытался повысить до 256, 512 и 1024Мб и до сих пор он возвращается с ошибкой:

Fatal error: Allowed memory size of 262144 bytes exhausted (tried to allocate 17152 bytes) in /imgprocess.php on line 83.

Я даже попытался с помощью (! Контрабандные) -1, чтобы позволить неограниченную память, просто чтобы увидеть, если что-то заставлял его подниматься высоко, но все равно не идти.

Я пробовал другой файл изображения, если он был плохим JPG, все равно не пошел.

Как это можно решить?

EDIT: Я хотел бы добавить, что PHP не находится в безопасном режиме

+0

Из интереса, какой размер изображения (изображения * размеры *, которые будут иметь гораздо лучшее отношение к несжатому размеру в памяти, чем размер сжатого с потерями JPEG). –

+0

@Matt: его 4288x2848 на 72dpi - Photoshop сообщает о нем как 34.9MB – TIW

+2

'Разрешенный размер памяти 262144 байта'-то там что-то не так. Как и где вы устанавливаете ограничение памяти? –

ответ

2

Это должно решить вашу проблему:

ini_set('memory_limit', '256m'); 

Пожалуйста, ознакомьтесь с faq.using.shorthandbytes

Использование "MB" неправильное сокращенное обозначение , ini_get() не возвращает нормализованные значения, чаще всего возвращает то, на что он был установлен.