Вопрос

У меня возникла проблема с получением большего объема памяти из PHP.

Это сообщение об ошибке:

Fatal error: Allowed memory size of 20971520 bytes exhausted (tried to allocate 82 bytes) in ...

Пока:

Я установил memory_limit в файле php.ini равным 32M:

memory_limit = 32M;

Я также попытался переопределить это вручную в самом скрипте:

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

И - вот тут я теряюсь - я подтвердил через phpinfo(), что этот файл php.ini является фактическим используемым ini-файлом, и memory_limit, похоже, установлен правильно.Строка в memory_limit дает это:

memory_limit    32M 32M

Таким образом, казалось бы, что все настроено правильно, но я получаю только 20971520 байт (~ 20M).

Где еще я должен искать, чтобы выяснить, где вводится это ограничение?

Редактировать: Я запускаю php под управлением nginx / fastcgi, на Ubuntu 9.04 в VPS.Процессы php-cgi действительно кажутся немного ресурсоемкими (RES = 25m, VIRT = 187m), но у меня есть 10m свободной физической памяти и 500m свободного пространства подкачки.

Это было полезно?

Решение 2

Я просто изучил код, который я запускал, и кто-то жестко закодировал это в конфигурационный файл:

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

Что перекрывало все остальное, что я делал.Фух.

Другие советы

Мой первый инстинкт - догадаться, что PHP читает другой php.ini.

В Debian (и, скорее всего, Ubuntu) каждая версия PHP (cli, cgi и apache) имеет свою собственную копию php.ini.

Вы могли бы попробовать установить его в файле .htaccess, это то, что мне пришлось сделать, чтобы заставить сайт работать на одном сервере.

вот настройки, которые я использовал:

php_value  upload_max_filesize  50M
php_value  post_max_size  60M
php_value  memory_limit  128M
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top