PHP память исчерпана - PullRequest
       21

PHP память исчерпана

4 голосов
/ 20 августа 2010

Любые идеи, почему я получаю ....

Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to

выделить 9792 байта) в /home/frich/public_html/creation/systemc/sMain/upload_image.php по линии 77

в следующей строке

$oldImage = imagecreatefromjpeg($img);

php извлекает изображение из формы HTML и изменяет его размер.

Прекрасно работает, если это небольшой файл. То есть несколько сотен КБ

Пробовал с файлом большего размера, так как я хочу максимум до 4Мб Изображение с ошибкой ок. 2mb

Заранее спасибо

Ответы [ 3 ]

10 голосов
/ 20 августа 2010

Вы получаете сообщение об ошибке

""""""""""""""""""""""""
Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to

allocate 9792 bytes) in /home/frich/public_html/creation/systemc/sMain/upload_image.php on line 77
""""""""""""""""""""""""

Это показывает, что либо вы используете общий хостинг, потому что ваш сервер memory_limit равен 32 МБ

Вам необходимо увеличить предел памяти, как указано выше,«Pekka» и «MartyIX»

, но для этого есть три способа сделать это.

1-й. попросите свою хостинговую компанию увеличить лимит памяти,

они увеличат его до макс. 48 МБ, что является ограничением любой хостинг-компании для сокращенного хостинга.

2nd. загрузка файла php.ini

с надписью «memory_limit = 100M и max_memory = 100M»

вы можете изменить 100M на любой размер, который вы хотите, но который может быть ограничен, чтобы он не использовал дополнительные ресурсы сервера, иначе ваша учетная запись может бытьприостановлено вашей хостинговой компанией

ОГРАНИЧЕНИЕ: эта опция может работать некорректно на каждом хостинге, потому что иногда этот код может быть заблокирован администратором, так что ресурсы сервера могут быть использованы в LIMIT.

3-й загрузить ".htaccess"

с записанным внутри него "php_value memory_limit 32M"

или

по умолчанию он доступен вВаш веб-каталог хостинга, то вы можете сначала загрузить его, так как он имеет другие настройки.скачайте его, откройте его с помощью блокнота и напишите «php_value memory_limit 32M»

и

4th добавьте код PHP вашей страницы

"ini_set ('memory_limit', '32M');"(Еще не проверено мной, может ли это работать нормально)

Спасибо и С уважением ........

7 голосов
/ 20 августа 2010

Изображение, которое вы пытаетесь обработать, слишком велико для ограничения памяти в 32 МБ, которое имеет ваш скрипт.

Изменение размера занимает не менее

(width in pixels) x (height in pixels) x 3 (or 4)

байтов (1 байт для красного / зеленого / синего, возможен один дополнительный байт для прозрачности)

Вам необходимо увеличить значение memory_limit на сервере или попросить администратора сделать это.

32 МБ - довольно приличная и распространенная ценность, однако, вам может не повезти, если вы пользуетесь виртуальным хостингом.

В качестве альтернативы, если возможно на вашем сервере, используйте ImageMagick , чье потребление памяти не учитывается в memory_limit.

0 голосов
/ 20 августа 2010

В зависимости от вашей конфигурации php вы можете увеличить ограничение памяти для скрипта с помощью ini_set ();Например,

ini_set('memory_limit','16M');

Я несколько раз использовал это с задачами обработки изображений, хотя файлы 4 МБ довольно тяжелые для веб-сервера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...