Allowed memory size of 67108864 bytes exhausted

Очередная проблема в работе сайта принесла тему для нового поста – ошибка “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. Но я гордый и начал копать дальше.

Читайте также:  Da0hk9mb6d0 rev d схема

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

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

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

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

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

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

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

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

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

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

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

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

Что для этого нужно? Ответ прост: постоянно видеть сколько памяти потребляет WordPress. Для этого придется покопаться в коде шаблона. Можно это сделать прямо из админки, раздел “Внешний вид” – “Редактор” – выбрать файл functions.php или через файловый менеджер по адресу …/wp-content/themes/ваша тема/functions.php (открыть с помощью Notepad++ или подобной программой). Перед закрывающим тегом ?> вставляем в файл код:

Читайте также:  Как вынуть клемму из разъема фишки

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

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

Когда вашему скрипту не хватает оперативной памяти для его выполнения (точнее он не укладывается в объём, который ему разрешён), возникает ошибка «Allowed memory size of XXX bytes exhausted (tried to allocate YYY bytes)».

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

PHP Выдал ошибку Fatal error: allowed memory size of 67108864 bytes exhausted (tried to allocate 16000 bytes). Ошибка возникала при изменении размера изображения с помощью функции imagecreatefromjpeg.

Исправить её можно путём добавления в php.ini файл (или, если у вас нет доступа к этому файлу, в файл .htaccess) строчку:

php_value memory_limit 512M.

Директива memory_limit задаёт максимальный объём памяти в байтах, который разрешается использовать скрипту. Это помогает предотвратить ситуацию, при которой плохо написанный скрипт съедает всю доступную память сервера.

Добавить комментарий Отменить ответ

Рекомендую

Рекомендую всем хостинг 1gb.ru. Работает хорошо. Особенно радует техподдержка. Как-то раз они даже в мой PHP-код залезли и помогли решить проблему.

Кроме того, рекомендую всем хостинг Timeweb. Не очень мне нравится техподдержка (по сравнению с 1gb). А так же не рекомендую VDS на FreeBSD. Но, в остальном, всё работает замечательно. Замечательно подходит для больших проектов, особенно на Битриксе.

Разработка сайтов

Я окончил математико-механический факультет. Более 10 лет занимаюсь веб-программированием. На данный момент, в основном, пользуюсь CMS WordPress и 1С-Битрикс. По поводу создания или доработок сайтов на этих и других CMS пишите мне: