Справочник

memory_limit в PHP: как увеличить лимит памяти

memory_limit — сколько памяти может занять один скрипт PHP. В Ubuntu для сайта стоит 128M. Если скрипту не хватает, PHP останавливает его с ошибкой Allowed memory size exhausted. Лимит поднимают в php.ini и перезапускают PHP-FPM.

≈ 5 мин чтения
Содержание 8

Что сделать прямо сейчас

Команды вводятся на сервере: подключитесь к нему по SSH (как подключиться) и набирайте их в том же окне.

  1. Откройте файл настроек PHP для сайта: sudo nano /etc/php/8.3/fpm/php.ini. Если система спросит пароль, введите пароль своего пользователя на сервере. Символы при вводе не видны — наберите пароль и нажмите Enter.
  2. Нажмите Ctrl+W, введите memory_limit и нажмите Enter — курсор встанет на строку с этой настройкой. Если в начале строки стоит точка с запятой, удалите её: такая строка не действует.
  3. Впишите новое значение: memory_limit = 256M. 256M — пример: ставьте столько, сколько просит ваша программа.
  4. Сохраните файл: Ctrl+O, Enter, затем Ctrl+X.
  5. Перезапустите PHP-FPM: sudo systemctl restart php8.3-fpm. Если команда ничего не ответила, PHP перезапущен.
  6. Проверьте значение: php-fpm8.3 -i | grep memory_limit.

В ответе последней команды должно быть memory_limit => 256M => 256M. Команды — для PHP 8.3 из Ubuntu 24.04. В Ubuntu 26.04 стоит PHP 8.5: в путях и командах вместо 8.3 пишите 8.5. Какая версия у вас, покажет ls /etc/php/.

Что значит memory_limit

  • Лимит действует на один скрипт: каждый запрос к сайту получает свои 128M, а не делит их с другими.
  • Если скрипт пытается взять больше, PHP его останавливает. В журнале появляется Allowed memory size of 134217728 bytes exhausted — 134217728 байт это 128M.
  • Значение пишут с буквой: 256M — 256 мегабайт, 1G — гигабайт.
  • -1 снимает лимит. Так стоит в PHP для командной строки, а для сайта так делать не стоит: скрипт с ошибкой займёт всю память сервера.
ГдеЗначение в Ubuntu 24.04Файл
сайт (PHP-FPM)128M/etc/php/8.3/fpm/php.ini
команда php в окне SSH и cron-1 — без лимита/etc/php/8.3/cli/php.ini

Сколько памяти займут все процессы

Сайт обслуживают несколько процессов PHP-FPM, и каждый может занять до memory_limit. В Ubuntu процессов не больше 5 — так задано в pm.max_children. Верхняя оценка памяти для скриптов — memory_limit, умноженный на pm.max_children: при 256M и 5 процессах это 1 280 МБ.

Сравните с памятью сервера: free -h, колонка available в строке Mem:. Если оценка близка к ней или больше, поднимайте memory_limit осторожно или уменьшите pm.max_children. Иначе в пиковый момент памяти не хватит, и система начнёт закрывать программы — Out of memory. Как посчитать процессы по реальному размеру — в разборе pm.max_children.

Только для одного сайта

Только для одного сайта — строкой php_admin_value[memory_limit] = 256M в пуле PHP-FPM или строкой memory_limit = 256M в файле .user.ini: как это сделать.

memory_limit можно поднять и в коде, функцией ini_set('memory_limit', '256M'): настройка меняется где угодно. Не сработает это, только если в пуле стоит php_admin_value[memory_limit] — тогда значение закреплено.

У WordPress есть своя настройка памяти в wp-config.php — разбор для WordPress.

Как проверить

ivan@myserver:~$ php-fpm8.3 -i | grep memory_limit
memory_limit => 128M => 128M

Первое значение — для текущего запуска, второе — основное из файлов настроек. Команда видит php.ini, но не пул и не .user.ini. Значение, которое видит сайт, точнее всего показывает phpinfo() на странице сайта: оно учитывает и настройки пула PHP-FPM, и файл .user.ini.

Ошибки рядом

Что видитеЧто делать
Allowed memory size of … bytes exhaustedподнимите лимит памяти
то же в WordPressразбор для WordPress
Out of memory: Killed processпамяти не хватило всему серверу
server reached pm.max_children settingвсе процессы PHP-FPM заняты

Источники

Сверено 14 октября 2026 года.

Что почитать дальше