Мы используем cookie-файлы
Для оптимизации работы нашего сайта мы используем cookie-файлы. Продолжая использовать сайт, Вы соглашаетесь с использованием cookie-файлов.
Панель управления
  • Русский
  • Українська
  • UAH
  • USD
  • RUB
  • EUR
  • +38(044) 392-74-33  Киев
  • +38(057) 728-39-00  Харьков
  • +38(056) 794-38-31  Днепр
  • +38(032) 229-58-93  Львов
  • +38(048) 738-57-70  Одесса
  • +38(093) 170-15-42  Life
  • +38(067) 400-88-44  Киевстар
  • +38(095) 630-90-82  Vodafone
  • +1(888)393-24-51  USA, Toll free
  • +44(131)507-01-14  Great Britain
  • +7(499) 348-28-61  Москва

2.20.8. Ошибка Fatal error: Allowed memory size

Ошибка «Fatal error: Allowed memory size» означает, что скрипт в процессе своей работы превысил значение параметра PHP memory_limit текущего тарифного плана.

Fatal error: Allowed memory size of X bytes exhausted (tried to allocate Y bytes) in /home/example/example.com/www/path/to/script.php on line Z
  • Х — доступный объём памяти, заданный параметром PHP memory_limit, в байтах.
  • Y — объём памяти, который скрипт пытался использовать сверх доступного объёма в момент возникновения ошибки, в байтах.
  • /home/example/example.com/www/path/to/script.php — полный путь к скрипту, при выполнении которого возникла ошибка.
  • Z — номер строки в скрипте, где возникла ошибка.
Сумма значений X + Y не является требуемым значением memory_limit, поскольку Y показывает количество памяти, которого не хватило на момент аварийного завершения скрипта, и в случае дальнейшей работы скрипт может затребовать гораздо больший объем памяти.

Чаще всего ошибка возникает в следующих ситуациях:

  • Самая распространённая ситуация, при которой скрипт исчерпывает всю доступную память, это работа с изображениями. Форматы PNG и JPG сжимают изображение, но для работы с ним PHP загружает его в память попиксельно, будто оно сохранено в формате BMP. Это приводит к тому, что скрипту не хватает памяти для обработки изображения. Чтобы ошибка не возникала, стоит уменьшать размеры изображений перед их загрузкой на сайт и не рассчитывать на то, что PHP сам изменит формат изображений в высоком разрешении.
  • Выполнение запросов к базе данных, возвращающих слишком большие объёмы информации, которые не вмещаются в доступную память.
  • Обработка XML-файлов большого объёма.
  • Запуск требовательных к ресурсам или просто неоптимизированных скриптов и модулей.

Решением проблемы может быть:

  • Изменение значения memory_limit в настройках PHP, если установлено не максимально доступное по текущему тарифу значение.
  • Если на сайте используются скрипты морально устаревших версий, обязательно проверьте, соответствует ли установленная для сайта версия PHP рекомендованной разработчиком сайта. Если нет, смените её на нужную и проверьте работу сайта примерно через 10-15 минут.
  • Уменьшение размера обрабатываемых скриптом файлов, анализ работы и оптимизация самого скрипта или модуля с целью уменьшения потребления им памяти.
  • Смена тарифа на другой, с большим значением memory_limit.
  • Для архивных тарифов с memory_limit 64 или 128 МБ — с помощью Turbo Boost можно временно (на 2 часа) увеличивать memory_limit до 256 МБ. Используется для кратковременного превышения ограничений тарифного плана при загрузке товаров в интернет-магазины, установки различных тем и других ресурсоёмких задач.

Примечание для WordPress: если размер фактически выделенной памяти (значение Х) меньше значения PHP memory_limit используемого тарифного плана, необходимо в файл wp-config.php добавить строку:

define('WP_MEMORY_LIMIT', 'xxxM');

Где xxx — значение memory_limit тарифного плана.