Как избежать ошибки PHP memory limit в WordPress: практические решения

Ошибка PHP memory limit — одна из частых проблем при работе с WordPress, особенно на слабых хостингах или при использовании ресурсоёмких плагинов и тем. В этой статье подробно разберём, что такое лимит памяти в PHP, почему возникает ошибка о его превышении, и как на практике исправить эту проблему, чтобы сайт работал стабильно и быстро.

Что такое PHP memory limit и почему возникает ошибка

PHP memory limit — это максимальный объём оперативной памяти, который может использовать скрипт PHP. Если WordPress или какой-то плагин пытается выделить больше памяти, чем установлено в настройках PHP, возникает ошибка типа Allowed memory size of ... bytes exhausted.

Причины возникновения ошибки могут быть разные:

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

Ошибка влияет на работу сайта — часто это приводит к белому экрану смерти (WSOD) или к сбоям в загрузке страниц.

Как проверить текущий лимит памяти PHP

Чтобы узнать, сколько памяти доступно для PHP скриптов, можно создать файл phpinfo.php с содержимым:

<?php
phpinfo();
?>

После загрузки этого файла на сервер и открытия в браузере найдите параметр memory_limit. Также можно проверить лимит из WordPress, добавив код в файл functions.php вашей темы или через плагин для вставки кода:

function wpdirect_get_memory_limit() {
    echo 'PHP memory_limit: ' . ini_get('memory_limit');
}
add_action('admin_notices', 'wpdirect_get_memory_limit');

Как увеличить лимит памяти PHP в WordPress

Самый простой способ — добавить или изменить значение memory_limit в конфигурации PHP. В WordPress рекомендуемый минимум — 128M, для тяжёлых сайтов — 256M и выше.

Способы увеличения memory_limit

1. Изменение wp-config.php

Добавьте в корень файла wp-config.php перед строкой /* That's all, stop editing! Happy blogging. */:

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

Это увеличит лимит памяти для фронтенда сайта.

2. Изменение php.ini

Если есть доступ к основному конфигу PHP, найдите строку с memory_limit и установите нужное значение:

memory_limit = 256M

После изменения нужно перезапустить веб-сервер.

3. Использование .htaccess

В некоторых случаях можно добавить в файл .htaccess в корне сайта:

php_value memory_limit 256M

Этот способ работает, если используется Apache с модулем PHP в режиме CGI.

4. Использование плагина для управления памятью

Плагин WP Memory Limit позволяет менять лимит прямо из админки. Это удобно, если нет доступа к конфигурационным файлам.

Как определить, какой плагин или тема потребляет много памяти

Иногда ошибка возникает из-за конкретного плагина или темы, которые используют слишком много ресурсов. Для диагностики примените следующие методы:

1. Деактивация плагинов по очереди

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

2. Использование плагина Query Monitor

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

3. Логирование ошибок PHP

Включите логирование ошибок PHP, чтобы получить более детальную информацию о сбоях. Для этого добавьте в wp-config.php:

define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);

После этого ошибки будут записываться в файл wp-content/debug.log.

Оптимизация использования памяти в коде WordPress

Если вы разрабатываете собственные плагины или темы, следите за эффективностью кода:

  • Избегайте загрузки больших массивов данных целиком — используйте постраничную загрузку (pagination) или запросы с ограничением LIMIT в SQL.
  • Освобождайте память после использования больших объектов, например, удаляйте ненужные переменные.
  • Используйте кэширование, чтобы избежать повторных тяжелых запросов.

Пример функции с ограничением количества постов и кешированием в transient:

function wpdirect_get_recent_posts_optimized() {
    $cache_key = 'wpdirect_recent_posts';
    $posts = get_transient($cache_key);
    if (false === $posts) {
        $posts = get_posts(['numberposts' => 10]);
        set_transient($cache_key, $posts, 3600); // кеш на час
    }
    return $posts;
}

Использование плагина Clearfy Pro для оптимизации ресурсов

Плагин Clearfy Pro помогает оптимизировать работу WordPress, отключая ненужные функции и скрипты, что снижает нагрузку на память. Он позволяет:

  • Отключать неиспользуемые модули;
  • Управлять загрузкой скриптов и стилей;
  • Оптимизировать работу базы данных;
  • Улучшать безопасность, что косвенно снижает нагрузку.

Clearfy Pro — отличный инструмент для борьбы с проблемами производительности и ошибками памяти.

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

Если хостинг не позволяет менять memory_limit, попробуйте следующие рекомендации:

  • Оптимизируйте плагины — отключите тяжелые или замените на более лёгкие аналоги.
  • Перейдите на более мощный тариф или другой хостинг с лучшими параметрами.
  • Используйте кэширование — плагины типа WP Super Cache или W3 Total Cache значительно снижают нагрузку.
  • Минимизируйте использование сторонних скриптов и тяжелых тем.

В крайнем случае можно обратиться к разработчикам плагинов за помощью в оптимизации кода.

Выводы и рекомендации

Ошибка PHP memory limit — не приговор, её можно решить разными способами: от увеличения лимита до оптимизации кода и настройки плагинов. Главное — системный подход и диагностика, чтобы выявить причину и устранить её.

Используйте предложенные методы, следите за состоянием сайта, и WordPress будет работать быстро и без ошибок.

Как найти и убрать дубли meta title и description в WordPress
19.08.2026
Как создать автоматические заголовки для постов в WordPress
22.12.2025
WooCommerce: автоматическое удаление отсутствующих товаров по расписанию
03.07.2026
Как избежать проблем с отключением плагинов в WordPress
05.03.2026
WooCommerce: автоматическое удаление отсутствующих товаров по расписанию
01.08.2026