Подтвердить что ты не робот

Как увеличить ограничение памяти для PHP более чем на 2 ГБ?

У меня проблема с увеличением предела памяти для PHP как модуля Apache.

Если я поместил следующую директиву в конфигурацию Apache, это будет работать нормально:

php_value memory_limit 1.99G

Но более 2 ГБ не работают, он восстанавливает это значение до 128 МБ.

В чем проблема? Мне нужно больше памяти для некоторых задач, связанных с PDF.

Сервер - это Debian 2.6.32-5-amd64 # 1 SMP, PHP 5.3.3-7 + squeeze13 с физической памятью 12 ГБ.

4b9b3361

Ответ 1

Вы пытались использовать значение в MB?

php_value memory_limit 2048M

Также попробуйте отредактировать это значение в php.ini не Apache.

Ответ 2

Я бы предположил, что вы смотрите на проблему в неправильном свете. Квест должен быть "что мне делать, для чего нужна память 2G внутри процесса apache с Php через модуль apache и этот набор инструментов лучше всего подходит для работы?"

Да, вы можете надеть ракету на пинто, но это, вероятно, не правильное решение.

Несмотря на это, я предоставил ракеты, если вам это действительно нужно... вы можете добавить в начало script.

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

Это установит его только для script. Вам все равно нужно будет сказать apache, чтобы это разрешить для PHP скрипт (я думаю).

Ответ 3

Для неограниченного ограничения памяти установите -1 в переменной memory_limit:

ini_set('memory_limit', '-1');

Ответ 4

У вас должна быть 64-разрядная ОС на оборудовании, поддерживающее 64-разрядную ОС, 64-разрядную версию Apache и то же самое для PHP. Но это не гарантирует, что функции, которые работают с PDF, могут использовать такие большие размеры памяти. Вам лучше не загружать весь файл в память, разбить его на куски или использовать функции файлов, чтобы искать его без загрузки в ОЗУ.

Ответ 5

Для других, которые испытывают ту же проблему, вот описание ошибки в php + patch https://bugs.php.net/bug.php?id=44522

Ответ 6

Введите следующую конфигурацию Apache:

php_value memory_limit 2048M

Ответ 7

Вы также можете попробовать это:

ini_set("max_execution_time", "-1");
ini_set("memory_limit", "-1");
ignore_user_abort(true);
set_time_limit(0);

Ответ 8

ini_set("max_execution_time", "-1");

ini_set("memory_limit", "-1");

ignore_user_abort(true);

set_time_limit(0);

В каком файле нам нужно добавить эти строки?