У меня проблема с увеличением предела памяти для 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 ГБ.
Вы пытались использовать значение в MB?
php_value memory_limit 2048M
Также попробуйте отредактировать это значение в php.ini
не в Apache .
Я бы предположил, что вы смотрите на проблему в неправильном свете. Квестор должен быть «то, что я делаю, которому нужна 2G-память внутри процесса apache с Php через модуль apache и этот набор инструментов лучше всего подходит для работы?»
Да, вы можете надеть ракету на форд-пинто, но это, вероятно, не правильное решение.
Несмотря на это, я предоставил ракеты, если вам это действительно нужно … вы можете добавить в начало сценария.
ini_set('memory_limit','2048M');
Это установит его только для скрипта. Вам все равно нужно будет сказать apache, чтобы это разрешить для PHP-скрипта (я думаю).
Для неограниченного предела памяти задано -1
в переменной memory_limit
:
ini_set('memory_limit', '-1');
У вас должна быть 64-разрядная ОС на аппаратном обеспечении, поддерживающее 64-разрядную ОС, 64-разрядную версию Apache и то же самое для PHP. Но это не гарантирует, что функции, которые работают с PDF, могут использовать такие большие размеры памяти. Вам лучше не загружать весь файл в память, разбивать его на куски или использовать функции файлов, чтобы искать его без загрузки в ОЗУ.
Для других, которые испытывают ту же проблему, вот описание ошибки в php + patch https://bugs.php.net/bug.php?id=44522
Введите следующую конфигурацию Apache:
php_value memory_limit 2048M