Memory Limit Exhausted — как увеличить лимит памяти и исправить ошибку

Memory Limit Exhausted означает, что PHP-скрипт или приложение использовали больше памяти, чем разрешено сервером. Когда лимит памяти заканчивается, сайт может перестать загружаться, показать белый экран, ошибку 500 или сообщение вида Allowed memory size exhausted.

Чаще всего проблема появляется на WordPress, при работе тяжёлых плагинов, импорте данных, резервном копировании, page builder-ах, обработке изображений или после обновления темы и плагинов. Ниже — полное и практичное решение шаг за шагом.

Quick Fix

  • Увеличьте memory_limit в PHP.
  • Для WordPress добавьте WP_MEMORY_LIMIT в wp-config.php.
  • Отключите тяжёлые плагины и проверьте, какой из них расходует память.
  • Проверьте логи сервера и PHP.
  • Обновите тему, плагины и версию PHP.
  • Проверьте, не упирается ли хостинг в жёсткие лимиты тарифа.

Что значит Memory Limit Exhausted

Ошибка Memory Limit Exhausted означает, что скрипт использовал весь доступный лимит оперативной памяти, выделенный для одного процесса PHP. После этого выполнение останавливается.

Проще говоря, сайту или конкретной задаче не хватило памяти для завершения работы.

Как выглядит ошибка

Обычно в логах или на экране можно увидеть такие варианты:

  • Allowed memory size of ... bytes exhausted
  • PHP Fatal error: Allowed memory size exhausted
  • Fatal error: Out of memory
  • белый экран сайта;
  • ошибка 500 Internal Server Error;
  • сообщение WordPress о критической ошибке.

Почему появляется Memory Limit Exhausted

1. Слишком низкий лимит памяти PHP

Самая очевидная причина — на сервере установлен слишком маленький memory_limit. Для простого сайта его может хватать, но после установки тяжёлого плагина или роста проекта лимит становится недостаточным.

2. Тяжёлый плагин или тема

Некоторые плагины безопасности, резервного копирования, импорта, SEO, конструкторы страниц и магазины расходуют очень много памяти. То же самое касается тяжёлых тем.

3. Обработка больших изображений или файлов

При загрузке и ресайзе больших картинок, PDF, архивов, экспортов и импортов память может заканчиваться очень быстро.

4. Плохой или неэффективный код

Если код делает лишние запросы, загружает в память большие массивы или работает в цикле без оптимизации, он может легко привести к исчерпанию лимита.

5. Конфликт плагинов

Отдельно плагины могут работать нормально, но вместе перегружать память. Особенно часто это видно на WordPress-сайтах с большим количеством расширений.

6. Ограничения хостинга

Даже если вы меняете настройки сайта, сам хостинг может иметь верхний предел памяти, который нельзя превысить на текущем тарифе.

7. Старый PHP

Старые версии PHP работают менее эффективно и могут тратить больше памяти на те же задачи, чем более новые версии.

Memory Limit Exhausted — как увеличить лимит памяти

1. Увеличьте лимит в wp-config.php

Если сайт на WordPress, откройте файл wp-config.php и добавьте строку:

define('WP_MEMORY_LIMIT', '256M');

Если строка уже есть, увеличьте значение. Часто начинают с 256M. Для более тяжёлых задач иногда используют 512M.

2. Увеличьте memory_limit в php.ini

Если у вас есть доступ к php.ini, найдите параметр:

memory_limit = 128M

И замените его, например, на:

memory_limit = 256M

После этого обычно нужно перезапустить PHP или веб-сервер.

3. Измените лимит через .htaccess

На некоторых хостингах можно добавить в .htaccess строку:

php_value memory_limit 256M

Но этот способ работает не везде. На части серверов он может вызвать ошибку 500, если такой параметр запрещён.

4. Измените лимит через панель хостинга

На многих хостингах есть раздел вроде PHP Settings, Select PHP Version или PHP Options. Там можно изменить memory_limit без ручного редактирования файлов.

5. Увеличьте лимит в user.ini

На некоторых shared hosting можно создать или отредактировать файл .user.ini и добавить:

memory_limit = 256M

Это полезно, если php.ini недоступен, а .htaccess не работает.

Какой лимит памяти ставить

  • 128M — минимум для простых сайтов.
  • 256M — хороший рабочий уровень для большинства WordPress-сайтов.
  • 512M — для WooCommerce, page builder-ов, импорта, тяжёлых плагинов и больших проектов.

Ставить слишком большой лимит без причины не всегда полезно. Лучше сначала понять, почему сайт вообще расходует так много памяти.

Что делать после увеличения лимита

  1. Очистите кэш сайта и браузера.
  2. Перезапустите PHP или сервер, если есть доступ.
  3. Повторите действие, которое вызывало ошибку.
  4. Проверьте, исчезла ли ошибка из логов.
  5. Если ошибка осталась, ищите плагин, тему или задачу, которая расходует память.

Если увеличение лимита не помогло

1. Найдите виноватый плагин

Отключите все плагины и включайте их по одному. Если ошибка возвращается после включения конкретного плагина, проблема почти наверняка в нём.

2. Проверьте тему

Временно включите стандартную тему WordPress. Если ошибка исчезла, причина в текущей теме или её функциях.

3. Посмотрите PHP-логи

В логах можно увидеть, какой файл, какая строка и какой скрипт расходуют память. Это самый быстрый путь к точной причине.

4. Проверьте импорт, бэкап или cron

Иногда ошибка появляется не на обычной странице, а во время фоновых задач: импорта, резервного копирования, генерации миниатюр, обновления кэша или cron-процессов.

5. Обновите PHP

Переход на более новую версию PHP может уменьшить расход памяти и улучшить производительность.

6. Проверьте лимиты тарифа хостинга

Если хостинг не даёт использовать больше памяти, даже правильные настройки могут не помочь. В таком случае иногда нужен более мощный тариф или VPS.

Как исправить Memory Limit Exhausted в WordPress

  1. Добавьте define('WP_MEMORY_LIMIT', '256M'); в wp-config.php.
  2. Проверьте настройки PHP в панели хостинга.
  3. Отключите плагины для теста.
  4. Проверьте тему.
  5. Посмотрите debug.log и error_log.
  6. Обновите PHP, WordPress, тему и плагины.

Частые сценарии, когда не хватает памяти

  • импорт товаров в WooCommerce;
  • резервное копирование сайта;
  • генерация миниатюр изображений;
  • работа page builder-ов;
  • массовое обновление плагинов;
  • поиск и фильтрация на большом сайте;
  • тяжёлые запросы к базе данных.

Как не допустить ошибки в будущем

  • Не держите лишние плагины, особенно тяжёлые и устаревшие.
  • Оптимизируйте изображения до загрузки.
  • Следите за версией PHP.
  • Проверяйте сайт после обновлений.
  • Используйте качественный хостинг с нормальными лимитами.
  • Периодически проверяйте логи ошибок.

FAQ

Что означает Memory Limit Exhausted?

Это означает, что PHP-скрипт использовал весь доступный лимит памяти и был остановлен.

Какой memory_limit лучше поставить для WordPress?

Для большинства сайтов хорошее рабочее значение — 256M. Для тяжёлых проектов иногда требуется 512M.

Где менять лимит памяти?

Обычно в wp-config.php, php.ini, .user.ini, .htaccess или через панель хостинга.

Почему ошибка возвращается даже после увеличения лимита?

Потому что причина может быть не только в маленьком лимите, но и в проблемном плагине, теме, плохом коде или жёстких ограничениях хостинга.

Стоит ли просто ставить очень большой memory_limit?

Не всегда. Лучше сначала найти причину высокого расхода памяти, чтобы не маскировать проблему.

Вывод

Memory Limit Exhausted чаще всего означает, что сайту или конкретному скрипту не хватило памяти для завершения работы. Самое быстрое решение — увеличить memory_limit и проверить, какой плагин, тема или процесс расходуют ресурсы.

Если после увеличения лимита ошибка остаётся, нужно искать реальную причину: тяжёлый плагин, неэффективный код, импорт, бэкап, фоновые задачи или ограничения хостинга. Именно это и даёт полное решение, а не временную заплатку.

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *