Joomla: ошибка при выделении памяти скриптом PHP |
Добавил(а) microsin | |||||||||||||||
Сегодня после попытки залогиниться на сайт Joomla 1.5 наткнулся на ошибку "Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 11 bytes) in / var/ www / имя_пользователя /data / www / имя_домена.ru / libraries / joomla / database / database / mysql.php on line 462". Причем для анонимного доступа сайт работал нормально - если зайти браузером с другого IP-адреса. Ответ нашел на сайте joomlaforum.ru [1]: Эта ошибка означает, что ваш скрипт PHP (а в контексте Joomla это или сама система или один из ее элементов) для выполнения требует памяти больше, чем разрешено в настройках PHP. Т.е. запрашиваемое значение превышает максимальное количество оперативной памяти предоставляемого пользовательскому аккаунту виртуальным хостингом. На разных хостингах это значение может отличаться. Чаще всего данная ошибка возникает в файле /includes/domit/xml_domit_parser.php при обработке xml-файлов (например при просмотре списка компонентов, модулей или мамботов. Если у вас возникает такая проблема, то можно сделать следующее: 1. Попробовать самостоятельно изменить это значение, добавив в самое начала index.php (расположенного в корне сайта) следующие строчки: < ?php ini_set("memory_limit", "32M"); ? > или же положив в корень сайта файл .htaccess следующего содержания: php_value memory_limit 32M Если же такой файл уже есть в корне сайта — просто добавьте в него приведенную выше строку. 2. Если это не помогло — обратитесь к администратору хостинга и попросите увеличить количество доступной памяти для PHP. 3. Для Joomla 1.5 существует плагин Memory Limit Plugin, который позволяет увеличить лимит без правки кода. [Исправление ошибки] Лично мне совет с правкой .htaccess не помог, помогло добавление кода в index.php: < ?php ini_set("memory_limit", "200M"); ? > Изменение вступит в силу немедленно, не потребуется ни перезагрузка сервера, ни демона Apache. [php.ini] Можно также изменить настройки php.ini [2]. Размещение этого файла зависит от типа Вашего хостинга. Если это выделенный сервер на RedHat или аналогичной системе Linux, то файл php.ini обычно находится в каталоге php-bin относительно домашнего каталога пользователя, от имени которого запускается сервер Apache, например в каталоге /var/www/apacheuser/data/php-bin. Для поиска файла php.ini можно воспользоваться командой find: myserver:/# find / -name php.ini После того, как файл php.ini найден, можно в текстовом редакторе его изменить, и задать новый допустимый размер выделяемой памяти для скриптов PHP. В моем файле php.ini не была указана команда для задания лимита, и по умолчанию действовал лимит 128 мегабайт. Я изменил лимит на 200 мегабайт, добавив в php.ini команду: memory_limit = 200M Изменение вступит в силу немедленно, не потребуется ни перезагрузка сервера, ни демона Apache. Для проверки текущего лимита PHP на выделение памяти можно воспользоваться командой phpinfo [3], добавленной в скрипт PHP. < ?php phpinfo(); ? > Если запустить в браузере скрипт с добавленной командой phpinfo, то текущие параметры PHP отобразятся в виде таблицы. Строка с параметром memory_limit покажет текущее значение лимита памяти.
[Ссылки] 1. Что означает "Fatal error: Allowed memory size of 16777216 bytes exhausted..." site:joomlaforum.ru. |