Что ограничивает мои ресурсы PHP?
Вопрос
У меня возникла проблема с получением большего объема памяти из 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