Что такое ошибка Fatal error: Allowed memory size, и как ее грамотно исправить

Одна из часто встречающихся ошибок, возникающих при открытии страниц сайтов, сделанных на популярном языке программирования PHP, — это ошибка исчерпания лимита памяти. Она выглядит на экране как надпись, которая начинается с текста на английском: “Fatal error: Allowed memory size…“

На приведенном примере видно, что движок PHP при обработке данной страницы попытался использовать память свыше установленного лимита в 256 мегабайт (268435456 байт). Откуда же взялся этот лимит, почему он превышен и как избавиться от подобных ошибок?

Важно! memory_limit/лимит памяти — ограничение для использования оперативной памяти в движке PHP. Может иметь различные цифровые значения в зависимости от настройки PHP на конкретном сервере.

Почему это происходит?Что такое ошибка Fatal error: Allowed memory size, и как ее грамотно исправить

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

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

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

Как исправить ошибку “Fatal error: Allowed memory size”?

Если для сайта используется виртуальный хостинг от провайдера и указанная ошибка встречается регулярно, то самый верный способ решения — купить тарифный план с достаточным лимитом памяти, исходя из требований используемой для работы сайта CMS. Например, для современных версий популярной CMS WordPress рекомендуемый лимит памяти —  это 256 мегабайт.

Важно! CMS — система управления контентом — набор скриптов для создания, редактирования и управления контентом сайта. Примерами популярных CMS являются WordPress, Joomla, OpenCart.

Многие хостинг-провайдеры разрешают пользователю изменять настройки PHP с помощью файлов конфигурации. И тем более изменение настроек необходимо, если используется собственный виртуальный сервер VDS.

Прежде всего следует уточнить действующие лимиты для PHP. Для этого можно создать на хостинге в каталоге с сайтом файл info.php следующего содержания (см. ниже) и открыть его в браузере.

Что такое ошибка Fatal error: Allowed memory size, и как ее грамотно исправить

Функция “phpinfo();“ заставит движок PHP сгенерировать страницу с подробным отчетом о всех настройках, лимитах и подключенных модулях. Находим на странице строку memory_limit и убеждаемся, что лимит памяти нужно увеличить.

Что такое ошибка Fatal error: Allowed memory size, и как ее грамотно исправить

В случае виртуального сервера надо будет отредактировать файл php.ini, найти в нем строку memory_limit, при необходимости раскомментировать ее (убрать точку с запятой в начале строки) и установить нужное значение. Например:

memory_limit = 512M

Это означает установку лимита памяти в 512 мегабайт. После этого перезапускаем веб-сервер, снова открываем в браузере страницу info.php и убеждаемся, что лимит увеличился.

Расположение php.ini можно узнать с помощью все того же php_info.

Так:

Что такое ошибка Fatal error: Allowed memory size, и как ее грамотно исправить

или так:

Что такое ошибка Fatal error: Allowed memory size, и как ее грамотно исправить

В случае виртуального хостинга от провайдера возможность изменения лимита может зависеть от провайдера. В настоящее время все больше и больше виртуальных хостингов используют в качестве ОС CloudLinux. Эта операционная система позволяет создавать изолированные окружения — своего рода VPS — и довольно гибко менять параметры внутри них.

Например, часто можно встретить ситуацию, когда хостер выделяет определенный объем памяти на весь аккаунт, и больше этого объема суммарно использовать не получится. А как именно делить этот объем между потоками — дело клиента.

Что такое ошибка Fatal error: Allowed memory size, и как ее грамотно исправить Что такое ошибка Fatal error: Allowed memory size, и как ее грамотно исправить

Таким образом, если у вашего хостера CloudLinux, то просто увеличьте значение memory_limit в настройках используемой версии PHP.

Но если у хостера не CloudLinux, то можно использовать несколько маленьких хитростей.

Файл .htaccess

На хостингах для настроек сайта практически всегда можно использовать “волшебный” файл .htaccess, в котором нужно будет прописать строку вида:

php_value memory_limit 512M

Если после редактирования файла .htaccess браузер показывает ошибку “500 — Internal Server Error”, это означает, что строка конфигурации прописана с ошибкой или же хостинг-провайдер не разрешает увеличение лимита, и необходимо убрать все сделанные изменения в этом файле.

Что такое ошибка Fatal error: Allowed memory size, и как ее грамотно исправить

Функция ini_set()

Второй способ уже затрагивает непосредственно программирование на языке PHP. Необходимо добавить в .php-файл установку лимита памяти. Делается это путем размещения в начале .php-файла строки вида:

ini_set(‘memory_limit’,’512M’);

Что такое ошибка Fatal error: Allowed memory size, и как ее грамотно исправить

Эта настройка будет работать только для конкретной страницы сайта.

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

Оптимизация алгоритмов и данных

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

Часто бывает так, что файл с данными загружается в память целиком с помощью функций языка PHP file() или file_get_contents(), что вызовет ошибку в случае больших файлов. Надо изменить алгоритм таким образом, чтобы данные читались небольшими порциями или построчно.

Также исчерпание лимита памяти часто встречается при обработке файлов .xml с данным для сайта, например, каталога товаров. В библиотеку языка PHP встроено несколько функций для обработки XML, и стоит выбрать для использования тот вариант, что требует меньшего количества памяти.

Важно! XML — это специальный формат файлов, который содержит структурированные текстовые данные и популярен для обмена информацией между сайтами.

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

Полезно использовать специальный параметр LIMIT в SQL-запросе для ограничения числа строк данных, получаемых с запросом.

Важно! SQL — это язык запросов к базам данных, например, к MySQL, который используется практически во всех популярных движках и CMS.

Наконец, одна из часто встречающихся ошибок при разработке на PHP, — это “бесконечный цикл”, когда по недосмотру программиста данные в программе запрашиваются без остановки, и память для них постоянно выделяется вплоть до исчерпания лимита. Надо внимательно проверить логику работы алгоритма на предмет подобной ошибки.

Использование настроек CMS

Если ошибка исчерпания лимита памяти возникает при использовании популярных движков и CMS, то имеет смысл решить проблему с помощью встроенных средств CMS. Например, для популярной системы WordPress необходимо будет отредактировать или добавить строку в файл wp-config.php:

define( ‘WP_MEMORY_LIMIT’, ‘512M’ );

Данная настройка увеличит лимит памяти для всех страниц сайта, включая панель администратора.

Использование оптимизаторов кода

Для языка PHP существуют дополнения (extensions), которые позволяют оптимизировать исполняемый код страницы прозрачно для разработчика и тем самым снимают требования к памяти.

К числу таких дополнений относятся, например, OPcache или APCu.

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

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

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

К счастью, некоторые провайдеры услуг хостинга предусмотрели такую ситуацию. Они предоставляют функцию turbo-boost, которая увеличивает лимиты памяти и максимального времени выполнения скриптов для конкретного сайта в течение некоторого времени, например, на два часа после активации.

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

Читайте также:  Ошибка 502 Bad Gateway nginx: что значит и как правильно исправить

Что делать, если не получилось исправить ошибку самостоятельно?

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

Специалисты смогут уточнить, какие ограничения существуют в рамках текущего тарифного плана, на какой тариф лучше перейти с учетом используемой CMS и нагрузки на сайт.

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

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

При возникновении этой проблемы на виртуальном сервере VDS может потребоваться помощь специалиста по администрированию серверов. Специалисты техподдержки провайдера хостинга также могут помочь выполнить нужные настройки сервера.

Не нашли ответ на свой вопрос?
Задайте его экспертам! Ответ приходит очень быстро и прямо на ваш email.

Рейтинги хостинг-провайдеров по задачам сайта

  • Европа
  • Египет
  • Индия
  • Израиль
  • Испания
  • Италия
  • Казахстан
  • Канада
  • Китай
  • Колумбия
  • Корея
  • Кыргызстан
  • Латвия
  • Мексика
  • Нидерланды
  • Норвегия
  • Пакистан
  • Польша
  • Россия
  • Украина
  • Сингапур
  • Саудовская Аравия
  • Турция
  • США
  • Филиппины
  • Финляндия
  • Франция
  • Швейцария
  • Швеция
  • Эстония
  • ЮАР
  • Япония

Панель управления

От панели управления зависит ваше удобство в настройке хостингесайта.

https://www.youtube.com/watch?v=kBPefrWqI_E\u0026pp=ugMICgJydRABGAE%3D

Большинство качественных хостингов из нашего ТОПа используют удобные панели управления, поэтому рекомендуем больше внимания уделить другим параметрам при выборе.

 

  • Собственная
  • cPanel
  • ISP Manager
  • DirectAdmin
  • Parallels Plesk

Вид хостинга

Облачный хостинг — распределение нагрузки на несколько серверов, если сервер с вашим сайтом перегружен или не работает. Это гарантия того что пользователи в любом случае смогут видеть ваш сайт. Но это дорогая, более сложная опция, которую предоставляют далеко не все провайдеры.

Виртуальный хостинг — подходит для большинства проектов начального уровня с посещаемостью до 1000 человек в сутки. В таком хостинге мощность сервера делится между несколькими хостинговыми аккаунтами. Услуга проста в настройке даже для новичков.

VPS — подходит для более сложных проектов с достаточно большой нагрузкой и посещаемостью до 10000 человек в сутки. Здесь мощность сервера фиксированная для каждого виртуального сервера, при этом сложность настройки увеличивается.

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

Размещение и обслуживание вашего собственного сервера в дата-центре хостинга — это не очень популярная услуга и требуется в исключительных случаях.

 

CMS

CMS — это система управления контентом сайта. Хостеры стараются для каждой из них делать отдельный тариф или упрощать установку. Но в целом это больше маркетинговые ходы, т.к. у большинства популярных CMS нет специальных требований к хостингу, а те что есть — поддерживаются на большинстве серверов.

 

Тип виртуализации

Виртуализация — это создание виртуальной среды на физическом сервере, позволяющая запускать требуемые ПО без затрагивания процессов, совершаемых другими пользователями сервера.

С её помощью ресурсы физического сервера распределяются между виртуальными (VPS/VDS).

Основные виды: аппаратная (KVM), паравиртуализация, виртулизация на уровне ОС (OpenVZ).

 

  • OpenVZ
  • Virtuozzo
  • KVM
  • Hyper-V
  • Xen
  • VMware

Прочее

Абузоустойчивый хостинг — компании, которые разрешают размещать практически любой контент, даже запрещенный (спам, варез, дорвеи, порнографические материалы). Такие компании не удаляют контент вашего веб-сайта при первой же жалобе (“абузе”).

Безлимитный хостинг — хостинг у которого отсутствуют лимиты на количество сайтов, БД и почтовых ящиков, трафик, дисковое пространство и т.д. Обычно это больше маркетинговый трюк, но можно найти что-то интересное для себя.

Безопасный хостинг — тот, где администрация постоянно обновляет ПО установленное на серверах, устанавливает базовую защиту от DDoS-атак, антивирус и файерволлы, блокирует взломанные сайты и помогает их «лечить».

Защита от DDOS — компании, которые предоставляют хостинг с защитой от DDoS-атак. Такие пакеты ощутимо дороже обычных, но они стоят своих денег, так как ваш сайт будет защищен от всех видов сетевых атак.

 

Бесплатный тест

Тестовый период — предоставляется хостером бесплатно на 7-30 дней, чтобы вы могли удостовериться в его качестве.

Moneyback — период на протяжении которого хостер обязуется вернуть деньги, если вам не понравится хостинг.

 

  • Тестовый период
  • Moneyback
  • VPS/VDS с тестовым периодом
  • Регистраторы доменов
  • Домен в подарок
  • SSL-сертификаты

Технологии и ОС

На языке программирования PHP и базах данных MySQL сейчас работает большинство сайтов. Они же поддерживаются практически всеми современными хостингами.

ASP.NET — платформа для разработки веб-приложений от Майкрософт.

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

 

  • Linux
  • Windows
  • ASP.net
  • MySQL
  • PHP
  • Java
  • Python
  • Node.js
  • Django

Как исправить фатальную ошибку: разрешенный размер памяти исчерпан в WordPress

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

fatal error: allowed memory size of 67108864 bytes exhausted

Вторая ошибка, указывающая на нехватку памяти в WordPress, — это белый «экран смерти». Если ваш сайт не работает, и все, что вы видите, это белый экран, у WordPress заканчивается память.

Что вызывает фатальную ошибку ограничения памяти WordPress

Веб-серверы устанавливают ограничение на объем памяти. Ограничение памяти является необходимой функцией для защиты серверов. Веб-серверам требуется достаточно памяти для одновременного запуска многих приложений.

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

Поскольку WordPress состоит из скриптов, написанных на PHP, он связан ограничениями памяти, установленными для PHP-скриптов.

Таким образом, если одному из ваших скриптов требуется больше памяти, чем может быть выделено, у него заканчивается память, и вы видите ошибку WordPress allowed memory size exhausted.

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

Как исправить эту ошибку ограничения памяти WordPress

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

Увеличение лимита памяти PHP в WordPress — простое решение

Эта ошибка указывает на то, что на вашем сайте закончилась память. Очевидный способ исправить это-увеличить объем памяти, который может быть выделен сценарию.

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

Вы можете вручную увеличить лимит памяти в WordPress, отредактировав файл wp-config.

Для этого подключитесь к своему сайту с помощью FTP-клиента FileZilla.

При подключении папки и файлы вашего сайта будут отображаться в правом нижнем углу экрана. Найдите папку, содержащую все ваши файлы WordPress, и дважды щелкните ее, чтобы открыть.

Что такое ошибка Fatal error: Allowed memory size, и как ее грамотно исправить

В этой папке найдите файл wp-config, щелкните его правой кнопкой мыши и выберите команду просмотр/редактирование.

Что такое ошибка Fatal error: Allowed memory size, и как ее грамотно исправить

Когда файл откроется в текстовом редакторе, прокрутите его вниз, чтобы найти строку “That’s all, stop editing! Happy blogging.” Вставьте следующий код над этой строкой.

Читайте также:  Ошибки баз данных MySQL: что значят и как их исправить

define( ‘WP_MEMORY_LIMIT’, ‘128M’ )
Что такое ошибка Fatal error: Allowed memory size, и как ее грамотно исправить

Сохраните этот файл и закройте редактор. FileZilla предложит вам загрузить отредактированный файл.

Теперь перезагрузите свой сайт. Проблема должна быть исправлена и ваш сайт должен отображаться правильно.

Примечание: строка, которую мы добавили выше, увеличила память до 128 мегабайт. Если вы все еще получаете ошибку, то этот размер памяти все еще может быть недостаточным. Вы можете исправить это, изменив ограничение памяти PHP на 128M, 256M или даже 512M.

Альтернативное решение-найти скрипт, вызывающий ошибку

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

Если, например, вам нужно увеличить выделенную память выше 256M, то этот скрипт уже занимает слишком много памяти. Это может испортить производительность вашего сайта.

В некоторых случаях ваш хост может вообще не разрешить вам увеличить объем памяти. В этом случае вы можете связаться с вашим хостом и попросить его увеличить объем памяти. Или еще лучше, вы можете отследить причину проблемы и избавиться от нее.

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

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

Как удалить плагин и тему без доступа к админ панели узнайте в следующих статьях.

Fatal error: Allowed memory size of * bytes exhausted. Варианты решения

Что такое ошибка Fatal error: Allowed memory size, и как ее грамотно исправить

Ошибки в работе веб-приложений и веб-сайтов — вещь, которая может доставить много проблем. То, что узнать о такой ошибки владелец ресурса может куда позже пользователей, ещё более усугубляет ситуацию.

В рамках данной статьи мы продолжим тему, которая поднималась в публикации Ошибка #1273 — Unknown collation: utf8mb4. Обновляем MySQL в Denwer, то есть поговорим о том, как исправить одну из распространённых ошибок, с которой сталкиваются веб-мастера.

Задача текущего топика — решить проблему исчерпания лимита памяти с последующим выводом ошибки Fatal error: Allowed memory size of * bytes exhausted.

Причины ошибки Allowed memory size

Представим ситуацию: мы обновляем SQL базу нашего сайта, импортируем созданный бэкап, но буквально через пару секунд после начала загрузки процесс останавливается и выводится ошибка.

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

А вот вообще критичный вариант: пользователь из поисковой выдачи пытается перейти на сайт, но вместо страницы с контентом получает ошибку.

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

Fatal error: Allowed memory size of 1* bytes exhausted (tried to allocate 2* bates) in 3* on line 4*

  • где:
    1* — допустимый для выделения объём памяти, в байтах;
    2* — объём памяти, который необходим для дополнительного выделения, в байтах;
    3* — путь до файл, при выполнении которого был исчерпан лимит выделенной памяти;
    4* — номер строки в файле 3*, при выполнении которой был исчерпан лимит выделенной памяти.
  • Вот пример ошибки, выпадающей при попытке импорта базы сайта WordPress с хостинга на Денвер для работы в локальной сети, о возможности которой говорилось в статье Денвер в локальной сети. Локальный сайт на телефоне:
  • Что такое ошибка Fatal error: Allowed memory size, и как ее грамотно исправить

Из скриншота ошибки можно понять, что при попытке выполнения 290 строки файла import.lib.php объём выделенной памяти в размере ‪134 217 728‬ байт (или ‪128 Мегабайт) закончился, необходимо дополнительное выделение 41 767 538 байт (39,83 Мегабайт) памяти.

Перевод из байт в Мегабайты осуществляется двойным делением величины на 1024 (после первого деления байт на 1024 мы получим килобайты, после второго — Мегабайты).

Обычно, в связи с кратностью памяти (элементарные байт и бит соотносятся в пропорции 1:8), объём памяти в php также указывают кратно 8, то есть 128 Мегабайт увеличивают не до 200, допустим, а до 256 Мегабайт.

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

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

Увеличение WP_MEMORY_LIMIT в php файлах

В этой главе представим два варианта решения проблемы с нехваткой памяти выполнения кода, оба способа заключаются в редактировании php-файлов сайта, в которых задаётся значение параметра WP_MEMORY_LIMIT.

WP_MEMORY_LIMIT в wp-config.php

Первое решение, которое применяется довольно часто, связано с редактированием файла конфигурации wp-config.php.

  1. Открываем файл, находящийся по следующему пути:
    /public_html/wp-config.phpи, если речь идёт о Денвере, соответственно:

    /www/wp-config.php

  2. В коде страницы сразу после тегаСохраняем файл с произвольным именем, например, phpinfo.php. Готовый файл можно скачать в прикреплённом к статье архиве: phpinfo.

    Теперь извлекаем из архива файл и помещаем его в корневую директорию сайта, то есть в каталог /public_html/ или /www/
    Далее в адресной строке набираем адрес нашего сайта и через слеш имя файла phpinfo.php, например:

    /myphpinfo.php

    Переходим по адресу и получаем в ответ примерно такую страницу:

    Что такое ошибка Fatal error: Allowed memory size, и как ее грамотно исправить

    В первую очередь смотрим на значение строчки Loaded Configuration File, если путь до php.ini там не прописан, то обращаем внимание на параметр Configuration File (php.ini) Path. Путь может быть указан разный. Вот только несколько возможных примеров:

    • /public_html/wp-admin/php.ini
    • /etc/php/php.ini
    • WebServersusrlocalphp5php.ini

    Теперь приступаем к увеличению выделенной памяти:

    1. Переходим в каталог, где хранится файл php.ini и открываем сам файл для редактирования. Если такого файла в каталоге нет, создаём его любым текстовым редактором.
    2. Добавляем в файл следующий код (всё, что указано после символа точки с запятой, является комментарием и не обязательно к добавлению):
      memory_limit = 256M ; увеличение памяти, выделяемой для работы скриптаГотовый файл можно скачать из прикреплённого к статье архива: php
    3. Сохраняем изменения и проверяем работу сайта.

    memory_limit в .htacess

    Заключительный в рамках данной статьи способ увеличения выделяемой памяти для выполнения скрипта — использование файла .htacess.

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

    Отметим только то, что нас интересует для текущих действий, а именно то, что файл .htacess хранится в корневой директории сайта. Приступим к его редактированию:

    1. Переходим в корневую директорию сайта и открываем файл .htacess любым удобным текстовым редактором.
    2. Добавляем в файл самой верхней строчкой следующий код:
      php_value memory_limit 128M
    3. Сохраняем изменения в файле и проверяем работу сайта.

    На этом всё. Мы рассмотрели 4 способа исправления ошибки Fatal error: Allowed memory size of * bytes exhausted.

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

    7.0/10 оценка (8 голосов)

    Ошибка Fatal error: Allowed memory size гласит о том, что вы достигли ограничения по памяти, которые у вас установлены в настройках web-сервера.

    Например, текст ошибки:

    Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 71 bytes) in … говорит, что 128 Мб не достаточно (число выше указано в байтах) и его нужно увеличить, либо в указанном месте решить проблему с утечкой памяти.

    Решение проблемы с ограничением памяти

    Есть два варианта как завершить операцию:

    • Оптимизировать скрипт.
    • Увеличить лимит по памяти.

    Первый вариант сложен и не всегда возможен. Поэтому рассматривать его не будем.

    Хотя, зачастую бывает так, что сайт, например, пытается сжать очень большую картинку в другой размер (например, фото в оригинале весит 20 Мб). В этом случае просто используйте оригинальные картинки меньшего размера.

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

    Файл php.ini

    Это рекомендуемый способ, если вы имеете доступ к файлу php.ini. Данный способ не сработает на многих платных хостингах провайдер, т.к. там закрывают доступ к этому файлу, в целях безопасности. Внимание! Данный способ затронет все ваши сайты и скрипты, находящиеся на сервере.

    Откройте файл php.ini и найдите там строку memory_limit:

    memory_limit = 256M

    Через .htaccess в корне сайта

    Добавьте в самом начале строку php_value memory_limit 256M. Во время выполнения PHP, запишите перед тяжелыми операциями в php-файл следующую строчку

    Как посмотреть, сработало ли?

    • Откройте в панели управления Joomla информацию о системе
    • Что такое ошибка Fatal error: Allowed memory size, и как ее грамотно исправить
    • И найдите строку memory_limit
    • Что такое ошибка Fatal error: Allowed memory size, и как ее грамотно исправить

    Тоже самое можно сделать через команду .

    Если не получилось…

    В случае, если рекомендации из статьи не помогли вам (возможно хостинг не дает таких прав), то обратитесь с этим вопросом к техподдержке вашего хостинга. Если хостер отказал, то рассмотрите вариант с выполнением тяжелых операций на локальной машине. Затем результат работы перенесите на ваш продуктивный сайт в интернете.

    Альтернатива

    Также оптимизации по памяти можно добиться установкой APC. Он уменьшает потребление памяти в ~1,5-2 раза и ускоряет работу всего сайта в целом. Для нормальной работы Joomla + JBZoo обычно хватает 64 Мб (с серьезным запасом на будущее).

    Рекомендуем прочитать

    Устранение ошибки — Fatal error Allowed memory size of

    Очередная проблема в работе сайта принесла тему для нового поста – ошибка “Fatal error: Allowed memory size of“.  Пришлось оказать помощь товарищу с устранением этой неприятности.

    • В свое время я долго искал решение этой проблемы и, обнаружив, что это довольно распространенное явление, решил помочь всем, кто столкнулся или столкнется с ней.
    • Суть такова: в консоли административной панели появляется ошибка:

    Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 1966080 bytes) in /home/username/public_html/wp-includes/class-simplepie.php on line 5410.

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

    Причина ошибки одна — CMS употребляет больше оперативной памяти, чем предоставляет хостинг. Чем это вызвано, тоже понятно: однозначно, плагины (изредка проблема возникает после обновления версии движка, но как правило в процессе активации, деактивированных перед обновлением WordPress плагинов).

    Как исправить ошибку

    А вот путей решения несколько. И один из них точно принесет результат. Также я расскажу как не допустить этой ошибки в будущем. Приступим.

    Первый способ

    Самый простой, но длительный по времени: написать в техподдержку компании, предоставляющей хостинг. Специалисты все исправят и вы вновь у руля. Однако, может случиться, что это поможет на 3-5 дней (как было у меня) и снова та же ошибка памяти. После 3-х писем в техподдержку мне посоветовали сменить CMS. Но я гордый и начал копать дальше.

    Второй способ

    Внести в файл .htaccess вашего сайта строку:

    php_value memory_limit ’64M’

    Если файла .htaccess у вашего сайта нет, то сделайте его: берем пустой txt файл (файл блокнота) и вносим туда вышеуказанную строку. Затем переносим это дело с помощью FTP клиента на сервер и там переименовываем в .htaccess. Устанавливаем атрибуты 777, проверяем сработало или нет. Опять же зависит всё от хостинга. Если и это не помогло, то…

    Третий способ

    Похож на второй, только работаем в другими файлами. Открываете index.php в корне вашего сайта и добавляете в него следующий код:

    define(‘WP_MEMORY_LIMIT’, ’64M’);

    Разрешенный объем оперативки для сайта вырастет до 64 мегабайт. Для WordPress сайта этот же код вставьте в файл конфигурации wp-config.php. Если хостинг провайдер не выключил в настройках сервера поддержку ini_set, то проблема должна решиться.

    Четвертый способ – лучший

    Гарантировано избавит вас от ошибки, так как решает саму причину ошибки. Но, возможно, придется пожертвовать плагином. Заходим в админку вкладка «плагины» и начинаем по очереди их деактивировать, проверяя при этом, после каждой деактивации наличие ошибки. Плагин-проказник обязательно найдется, после этого активируйте все плагины, которые не вызывают ошибку.

    Если сайт полностью лежит и нет возможности делать манипуляции с админкой, то зайдите на хостинг. Откройте папку wp-content/plugins, скопируйте все плагины к себе на компьютер и поочередно удаляйте один за другим, проверяя – заработал ли сайт.

    Кстати, такое решение лечит и другие ошибки.

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

    Профилактика ошибок памяти

    Что для этого нужно? Ответ прост: постоянно видеть сколько памяти потребляет WordPress. Для этого придется покопаться в коде шаблона.

    Можно это сделать прямо из админки, раздел “Внешний вид” – “Редактор” – выбрать файл functions.php или через файловый менеджер по адресу …/wp-content/themes/ваша тема/functions.

    php (открыть с помощью Notepad++ или подобной программой). Перед закрывающим тегом ?> вставляем в файл код:

    function usage () {printf ((‘%d / %s’), get_num_queries (), timer_stop (0, 3));
    if ( function_exists (‘memory_get_usage’) ) echo ‘ / ‘ . round (memory_get_usage ()/1024/1024, 2) . ‘mb ‘; }
    add_action (‘admin_footer_text’, ‘usage’);

    Данная функция будет выводить в футере администраторской панели WordPress информацию об объеме потребляемой сайтом памяти. В качестве бонуса вы увидите скорость загрузки страниц и количество запросов к базе данных.

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

    Удачи на вашей охоте за прибылью!

    Ошибка Allowed memory size

    «Fatal error: Allowed memory size…» переводится, как «неустранимая ошибка: допустимый размер памяти…». Данная ошибка говорит о том, что скрипт превысил допустимый размер выделяемый ему оперативной памяти.

    Fatal error: Allowed memory size of 408933426 bytes exhausted (tried to allocate 3009682 bytes)

    Данная ошибка показывает:

    • 408933426 bytes — допустимый размер памяти
    • 3009682 bytes — сколько не хватает памяти.

    Ошибка исчерпания лимита памяти возникает, когда сайт потребляет больше оперативной памяти, чем ему доступно (указано в php.ini).

    Как исправить ошибку «Fatal error: Allowed memory size…»?

    Наш хостинг предоставляет возможность пользователю менять настройки PHP. Для устранения данной ошибки, нам нужно будет увеличить параметр memory_limit для версии PHP, на которой работает Ваш сайт. Узнать версию Вашего сайта Вы можете в панели хостинга в разделе «WWW» — пункт «WWW-домены».

    После того, как мы узнали версию PHP, нам нужно перейти в раздел «WWW» — пункт «PHP», выбираем нужную нам версию и нажимаем кнопку «Настройка».

    В открывшемся окне будут представлены параметры PHP, нас интересует memory_limit.

    Сейчас напротив поля memory_limit будет указано доступное количество оперативной памяти.

    Чтобы изменить этот параметр, нам нужно нажать на него и сверху выбрать кнопку «Изменить» или кликнуть на него 2 раза и ввести нужное нам количество оперативной памяти.

    Будьте осторожны на каждом тарифе хостинга есть свое ограничение по лимиту оперативной памяти. Ознакомиться с данными ограничениями Вы можете на этой странице.

    Также узнать версию PHP и объём доступной памяти можно с помощью функции phpinfo(). Для этого нужно создать php-скрипт, например с именем: t.php. После создания, нужно будет добавить в него следующий код:

    После добавления кода, нужно загрузить файл в директорию сайта. И при открытии сайта, дописать к адресу /t.php (Например, ваш_сайт.ru/t.php). После чего откроется страница, где будут указаны все параметры PHP.

Ссылка на основную публикацию