Содержание:
Ошибка 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:
Через .htaccess в корне сайта
Добавьте в самом начале строку php_value memory_limit 256M. Во время выполнения PHP, запишите перед тяжелыми операциями в php-файл следующую строчку
Как посмотреть, сработало ли?
Откройте в панели управления Joomla информацию о системе
И найдите строку memory_limit
Тоже самое можно сделать через команду .
Если не получилось.
В случае, если рекомендации из статьи не помогли вам (возможно хостинг не дает таких прав), то обратитесь с этим вопросом к техподдержке вашего хостинга. Если хостер отказал, то рассмотрите вариант с выполнением тяжелых операций на локальной машине. Затем результат работы перенесите на ваш продуктивный сайт в интернете.
Альтернатива
Также оптимизации по памяти можно добиться установкой APC. Он уменьшает потребление памяти в
1,5-2 раза и ускоряет работу всего сайта в целом. Для нормальной работы Joomla + JBZoo обычно хватает 64 Мб (с серьезным запасом на будущее).
Когда вашему скрипту не хватает оперативной памяти для его выполнения (точнее он не укладывается в объём, который ему разрешён), возникает ошибка «Allowed memory size of XXX bytes exhausted (tried to allocate YYY bytes)».
Для решения данной задачи предлагаю три варианта на выбор в зависимости от прав доступа на сервере и его конфигурации.
Очередная проблема в работе сайта принесла тему для нового поста – ошибка “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 вашего сайта строку:
Если файла .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 информацию об объеме потребляемой сайтом памяти. В качестве бонуса вы увидите скорость загрузки страниц и количество запросов к базе данных.
Теперь Вы наглядно контролируйте изменение потребляемой памяти при активации того или иного плагина и сразу увидите, если что-то пойдет не так.