Intereting Posts
конвертировать дату формата dd / mm / yyyy из формы в метку времени? Laravel 5.4 – Проверка с регулярным выражением Выполнить параллельные команды SSH? Предупреждение: mkdir (): Файл существует Массив реструктуризации на основе отношения родителя / ребенка Сравнение строк PHP с использованием '==' Невозможно добавить атрибут с префиксом пространства имен с помощью PHP Simplexml Который быстрее и лучше, Switch Case или если что-то еще, если? php + MySQL редактирует данные таблицы Как настроить Zend 2 на сервере хостинга? Полезно ли использовать библиотеку Active Record для CodeIgniters для управления базами данных MySQL или просто использовать SQL? Не получить ответ на вызов AJAX для PHP (с данными JSON) Ошибка «Невозможно убить процесс» с помощью «php composer.phar install» на Azure PHP DOMDocument: как убедиться, что я получаю 2 элемента, которые являются h3 + таблицей один за другим, а не h3 + p Получение всех дат по понедельникам и вторникам на следующий год

Joomla – Допустимый размер памяти 1073741824 байт исчерпан

На моем веб-сайте joomla появилась следующая ошибка

Неустранимая ошибка: допустимый размер памяти 1073741824 байт исчерпан (пытался выделить 78 байт)

Я знаю, что мы можем увеличить ограничение памяти с помощью ini_set , но я считаю, что это не правильный способ решить эту проблему. Хотя, если я установил ограничение на неограниченную память (-1), я получу внутреннюю ошибку сервера . Я совершенно не осведомлен о недавних действиях на этом сайте, поскольку я недавно назначен на эту задачу. Я попытался отключить некоторые плагины и модули с помощью DB. Что я сделал, просто _modules записи из _modules и _plugins с убывающим порядком id и измените publish на 0 . Но ничего не работает. Я получаю ту же ошибку (Fatal error: Allowed memory …). Я попытался открыть страницу администрирования, которая также не загружается. Просто показ пустой страницы.

Пожалуйста, помогите мне исправить это. Я новичок в joomla

Related of "Joomla – Допустимый размер памяти 1073741824 байт исчерпан"

Я не верю, что вы получите краткий ответ на этот вопрос, поскольку он слишком широк. Похоже, у вас утечка памяти. Видеть:

  1. Как найти, какой PHP-скрипт утечка памяти?
  2. Диагностика утечек памяти. Допустимый размер памяти в # байт.

К сожалению, найти причину утечки памяти – это простая задача. Две приведенные выше ссылки содержат несколько полезных советов, а именно: вызовы memory_get_usage а также расширение Xdebug .

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

Давайте начнем с того, что вам сообщает это сообщение.

PHP говорит, что я успешно присвоил GIGABYTE памяти для этого кода для запуска, но теперь мне нужно выделить еще 78 байт, но я не могу, потому что я достиг своего предела.

Часть этого утверждения, которое должно выкрикивать на вас, – это уже выделенное GIGABYTE памяти для этой обработки. Это просто смешно.

Либо, как было предложено @mistermartin, какой-то код вызывает утечку памяти или у вас есть какой-то код в неудавшемся процессе, который потребляет смехотворно большие объемы памяти

Это сообщение обычно связано с трассировкой стека, в которой вы указываете, в какой части кода произошла эта ошибка, и какой фрагмент кода назывался так и т. Д. И т. Д.

Вопрос: Всегда ли это происходит в одном и том же коде? Если так, то, где вы начинаете искать.

Я бы начал, просматривая весь код в этой трассе стека, а не только конкретный сценарий, который фактически сломал верблюдов назад, так сказать. Проработайте свой путь назад через весь код, который был выполнен, ища что-то, что может выделить hugh количества памяти, массивы – это хорошее место для начала, но это не единственная возможность.

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

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

1 Использование PHP-кода

 ini_set('memory_limit', '-1'); // This will take unlimited memory usage of server 

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

2 Использование php.ini

 Change the line in php.ini If your line shows 32M try 128M. memory_limit = 128M ; Maximum amount of memory a script may consume (128MB) 

Как отладить код

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

Как найти, какой PHP-скрипт утечка памяти?

Я не очень хорошо знаком с Joomla, но проверял, что он перенаправляет трафик через файл index.php, похожий на многие другие фреймворки и приложения. Достойный первый шаг к поиску ГДЕ, где происходит утечка, будет добавлено следующее в файл index.php .:

 function shutdown() { $aError = error_get_last(); if ($aError["type"] == E_ERROR ) { openlog("Fatal Error Shutdown Log: ", LOG_ODELAY, LOG_USER); syslog(LOG_ERR, 'Message: ' . $aError['message'] . PHP_EOL); syslog(LOG_ERR, "File: " . $aError['file'] . PHP_EOL ); syslog(LOG_ERR, "Line: " . $aError['line'] . PHP_EOL ); } } register_shutdown_function( 'shutdown' ); 

Проверьте свой syslog на строку «Fatal Error Shutdown Log:», и он должен указать вам конкретное место, в котором происходит утечка памяти. Если у Joomla есть более подходящее место для размещения этого кода, пойдите для него. В теории функции выключения будут выполняться независимо от того, что. все это делает log только фатальные ошибки для вашего syslog. Ошибки памяти – это фатальные ошибки. Удачи.

Я столкнулся с аналогичной проблемой со смехотворными длинными строками SQL (унаследованный код был взят массивным массивом в состояние IN). Запишите ваши SQL-запросы и проверьте, что они не превышают max_allowed_packet (1GB)

http://dev.mysql.com/doc/refman/5.1/en/packet-too-large.html

У меня тоже была эта проблема – для моей / администратор / папки. Ни один из параметров конфигурации или ограничения на память в php.ini не исправил проблему, которую я отслеживал, чтобы подключиться к тому факту, что я изменил имя моей / администратор / папку, чтобы сделать ее более трудной для хакеров. Не должно было иметь значения, если код использовал относительные пути, но, по-видимому, какой-то код этого не сделал. Теперь я переименую папку обратно по умолчанию, чтобы использовать функции администратора, а затем вернуться к случайному имени, чтобы дать хакерам лучший вызов. Итак, вы изменили имена папок? Я надеюсь, что это помогает кому-то.

Вы можете начать с включения отладки Joomla. На Joomla 3 он находится в системе backend> global configuration> system> debug system

Затем на переднем конце вашего сайта ваш шаблон должен предоставить некоторую информацию об отладке.

Я бы начал с поиска подсказок в разделах «Информация о профиле и использовании памяти»

Удачи!

редактировать
По общему признанию, это немного длинный снимок, но, возможно, на сайте есть некоторые резервные копии Akeeba, которые вы могли бы использовать. Найдите некоторые файлы Akeeba .jpa, возможно, в site_root / administrator / components / com_akeeba / backup /

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

Может быть, тебе повезет.