06 Ноября 2013 состоялся финальный релиз многими долгожданного и много обещающего, по крайней мере в анонсах, Joomla! 3.2.0. Владельцы сайтов с предыдущими версиями Joomla решили обновиться, но многие из них неожиданно столкнулись с проблемами. У кого-то онлайн обновление не работает как нужно, у других после обновления на Joomla! 3.2.0 перестали работать некоторые расширения, а у некоторых (вообще-то их уже много) вообще либо нет доступа в панель управления, либо не открываются страницы сайтов.
На многих форумах, включая конечно же форум поддержки The Joomla! Forum, один за одним появляются топики и сообщения о проблемах, появляющихся на сайтах после обновления на Joomla! 3.2.0. В ответ на эти сообщения появляются различные советы для их решения, но все они, как говорится, носят лишь «точечный» характер, так как рекомендованные «заплатки» помогают лишь единицам.
В этой статье я хочу рассказать о решении одной из самых критических проблем, когда после обновления вместо страницы своего сайта некоторые видят пустую страницу, а если у них включено отображение ошибок, то сразу же появляется сообщение о фатальной ошибке типа Fatal error: Call to a member function getItems() on a non-object in .../components/com_sef/joomsef.php on line 1102
. Это пример, когда проблема касается популярного расширения «ARTIO JomSEF 4.5», но возможно таким же образом можно будет исправить и другие. Те, кому лень читать всю статью, могут сразу же перейти к разделу Решение проблемы для ARTIO JomSEF 4.5.
Один из посетителей моего блога обратился ко мне за помощью и сообщил, что после обновления Joomla 3.1.5 на Joomla 3.2.0 у него перестали открываться страницы сайта, и вместо них появляется фатальная ошибка, которую я упомянул выше. Установив на свой тестовый сайт расширение «JomSEF 4.5» с чистой Joomla 3.2.0 я также сразу же получил точно такую же ошибку и начал искать вероятные причины ее появления. Ведь после отключения всех частей JomSEF сайт работал адекватно, страницы отображались без проблем и ошибок не было.
Для начала я открыл файл расширения joomsef.php
и перешел к строке с номером 1102, которая была указана в сообщении о фатальной ошибке:
$items = $menu->getItems(array('home'), array('1'));
Очевидно, что фатальная ошибка вызвана тем, что функция $menu->getItems
якобы не возвращает значения типа «объект». Тогда пришлось найти строку кода, где объявлялась переменная $menu
как объект. Это была строка в том же файле с номером 1085:
$menu =& JSite::getMenu(true);
Под подозрение сразу же попал класс JSite
и его функция getMenu(true)
. Запустил поиск по файлам Joomla 3.2.0 нашел, что класс JSite
объявлен в файле /administrator/components/com_search/helpers/site.php
, и как оказалось, функция getMenu(true)
теперь уже не принимает никаких параметров:
public function getMenu() { $result = new JSite; return $result; }
Сравнив с Joomla 3.1.6 стало видно, что в предыдущих версиях финальный класс JSite
был объявлен совсем в другом файле /includes/application.php
, но уже в обновлении Joomla 3.2.0 объявление этого класса убрали из файла application.php
. Вот вырезка из объявления класса Joomla 3.1.6:
final class JSite extends JApplication { ... public function getMenu($name = null, $options = array()) { $options = array(); $menu = parent::getMenu('site', $options); return $menu; } ... }
Как видите, там упомянутая ранее функция getMenu('site', $options);
была с параметрами.
Исходя из этого стало понятно, что расширение ARTIO JomSEF 4.5 некорректно вызывало функцию JSite::getMenu
и как следствие вместо ожидаемого объекта переменная $menu
в файле joomsef.php
получала значение NULL
, что собственно и вызывало фатальную ошибку.
Решение проблемы для «ARTIO JomSEF 4.5»
Для того, чтобы сайт после обновления Joomla 3.2.0 нормально работал с установленным расширением «JomSEF 4.5», нужно в двух его файлах /components/com_sef/joomsef.php
и /components/com_sef/sef.router.php
изменить все строки с кодом
$menu =& JSite::getMenu(true);
или
$menu =& JSite::getMenu(false);
на строки без параметров «true» и «false» при вызове функции getMenu()
$menu =& JSite::getMenu();
Я правда не уверен на все 100%, что расширение «JomSEF 4.5» будет работать как нужно, так как проверил пока лишь на тестовом сайте и на сайте посетителя моего блога, который обращался за помощью касательно проблемы с расширением «JomSEF 4.5». Однако, если функция getMenu(...)
раньше должна была использоваться с параметрами для определения нужной области для получения меню, то скорее всего строки типа $menu =& JSite::getMenu(true);
нужно было бы заменить на
$menu =& JFactory::getApplication()->getMenu("site");
Некоторым может показаться статья слишком огромной и нудной, но мне хотелось изложить свои мысли и пути решения проблемы с обновлением Joomla 3.2.0 как можно детальнее. Надеюсь, что это поможет решить и другие проблемы, приведшие к неработоспособности многие сайты или расширения.
Напоследок хочу напомнить, что перед любым обновлением, особенно работающего сайта, нужно обязательно делать резервные копии файловой системы и базы данных! Мало того, перед тем, как приступить к обновлению, очень рекомендую убедиться на локально установленном сайте, что после апдейта все расширения и сам сайт работает исправно!
Если у кого появятся свои решения такой же и других проблем, пожалуйста, пишите о них подробно в комментариях. Позже я смог бы добавить их к статье.
Удачи!
Метки: JomSEF, Joomla, обновление, расширение, фатальная ошибка
Команда разработчиков JoomSEF совсем недавно выпустила новую версию своего расширения — JoomSEF 4.5.1, которая уже совместима с Joomla 3.2.0. Изменения в ней конечно в нескольких местах отличаются от того, что я предлагал. Но думаю, что все же мои старания пригодятся для решения других проблем :)
Кстати, разработчики JoomSEF что-то долго тянули с выпуском совместимого с Joomla 3.2.0 расширения. За месяц можно было уже проверить на бета-версиях и все исправить до выхода финальной.
Обновил сайт с версии 3.1.5 до 3.2.0 — перестал работать плагин reCaptcha.
Исправляется редактированием файла plugins/captcha/recaptcha/recaptcha.php
Подробно можно прочитать на _http://kireevdv.ru
Обновила сайт до 3.2.0 — что-то происходит с кешированием материалов. Редактирую материал, сохраняю, открываю новый — и в нем стоит текст, который только что вставляла в предыдущий материал. Очистка кеша сайта, браузера и удаление устаревшего ни к чему не приводит! Не представляю, где копать…
katerina, у вас вероятно установлено какое-то расширение, отвечающее или причастное к кэшированию, и скорее всего оно не совместимо с Joomla 3.2.0.
Попробуйте временно отключить стороннее расширение, и если вс будет работать как нужно, тогда проверьте на сайте создателя, может у них появилось обновление.
Та же беда со старым контентом во вновь созданной статье. Ничего сверху на эту джумлу не ставилось, только то что было. Кэширование отключено
Артем,
каким редактором вы пользуетесь для добавления или редактирования статей и какая у него версия?
Если вы не устанавливали абсолютно ничего стороннего (до и после обновления), т.е. никаких расширений, никаких плагинов, и пользуетесь стандартным редактором, то проверьте его версию, возможно он не обновился на новый. Заодно скажите, с какой версии Joomla вы обновились на 3.2.0.
Установил 3.2.0 и теперь не работает авторизация, новые пользователи появляются в админ панеле, активирую их, но авторизоваться не могу, пишет ошибку, полазил в базе данных, заметил что пароли при регистрации записываются через md5-хэширование в базе данных, а до этого записывались по-другому, тобиш при регистрации записывается в одном виде, а при авторизации проверяет по-другому виду, не знаю как исправить!
Если менять у пользователя пароль в админке, то сохраняется как надо, по старому, но не буду же каждому пользователю менять пароль(
Все разобрался) в registration.xml слетела required (Обязательное поле), поставил true, теперь пароли по-старому в базу записывает
Bourne, поздравляю. Вас с успешным решением проблемы. И спасибо, что отписали здесь — информация другим может пригодится. Да, и просьба — не пишите пожалуйста несуществующий адрес сайта в поле «Сайт» когда комментируете, а то получается битая ссылка. Спасибо.
Здравствуйте! У меня такая же проблема с авторизацией на 3.2.1. Вчера обновил джумлу до 3.2.2 результат тот же. Пользователь успешно регистрируется, а зайти не может, пишет что не найден пользователь с таким id. Если пересохранить пароль в админке то тогда все в норме. В registration.xml везде required=»true».
Помогите пожалуйста люди добрые… Сайт уже запускать нужно, а тут такая лажа…
Дмитрий, так как вы дали мало информации, то могу посоветовать вот что:
0) сделайте полный бэкап файлов сайта и Базы Данных;
1) убедитесь, что на вашем сервере PHP 5.3.1 или выше, MySQL 5.1 или новее;
2) отключите в админке подтверждение регистрации по почте;
3) почистите кэш Joomla в админке, кэш в браузере и удалите куки вашего сайта;
4) переключите сайт на стандартный шаблон Joomla;
Если после этого ситуация не изменится, то отключите ВСЕ плагины и расширения, которые вы устанавливали лично (только не отключайте родные компоненты и плагины Joomla!) и снова проверьте процесс регистрации.
Если все будет в порядке, то по одному подключайте отключенные плагины и расширения, и снова проверяйте регистрацию, чтобы выявить «проблемный» плагин или расширение.
Заодно проверяйте, что записывается в БД в таблицы «_session» и «_users» и «_user_usergroup_map» при каждой неудачной регистрации (когда при попытке входа выдается ошибка).
Короче решил я вопрос этот.
Спасибо большое, что попытались помочь! Но проблема была в самой джумле.
Вообщем долго рассказывать, лучше ткну ссылку на тему которую я создал на форуме.
Вот: http://joomlaforum.ru/index.php/topic,288001.0.html
А Вы можете разместить это решение у себя на блоге, ибо поиски решения этой проблемы привели меня сюда. Может еще кому поможет.
От Владимир (админ блога):
Дмитрий, я смог бы разместить ваше решение проблемы на блоге, но оно к сожалению решает проблему лишь до очередного обновления Joomla, при котором все изменения снова придется вносить вручную. Мне бы не хотелось, чтобы посетители блога запутались. В общем нужно более гибкое решение проблемы, а пока посетители блога смогут о вашем решении узнать здесь, в комментариях. Надеюсь на ваше понимание.
Да, действительно. Забыл упомянуть, что решение временное. Будем надеяться, что разработчики учтут эти проблемы в следующих обновлениях, а пока имеем то, что имеем…
После обновления с 3.1 на 3.2 вот какая ошибка
Fatal error: Call to a member function getTag() on a non-object in /home/ontargit/public_html/joomlademo/libraries/cms/application/site.php on line 436
уже все перепробовала, все форумы облазила
Анна,
у Вас были установлены сторонние (не Джумловские) расширения?
Если да, то войдите в панель управления и отключайте их по очереди и проверяйте, после отключения какого ошибка исчезает.
Однако, у меня подозрение, что у вас это из-за шаблона — ошибка вызвана в функции
public function getTemplate($params = false)
. Попробуйте подключить стандартный шаблон, который входит в состав Joomla 3.2. Попробуйте временно для сайта включить шаблоны «Beez3″ или «Protostar».Я поставил на голую систему, из нестандартных только artio joomsef.
та же ошибка. шаблон тут не при чем, как и artio joomsef, в админ панели ошибка возникает Fatal error: Call to a member function getTag() on a non-object in /…./libraries/cms/application/site.php on line 305
Nikko320, Вы уверены, что используете последнюю версию ARTIO JoomSEF 4.5.1, в которой исправлена проблема совместимости с Joomla 3.2?
Только K2 и Helix из сторонних.
Строка 436 вот: $tag = $this->getLanguage()->getTag();
Смену языка и т.п. уже пробовала отключать — без изменений.
Строка 436 как раз в функции
public function getTemplate($params = false)
.Попробуйте временно для сайта включить шаблоны «Beez3» или «Protostar».
Ничего не меняется
Если смена шаблона на стандартный ничего не дает, то остается отключать сторонние расширения и плагины, начните наверное с «Helix».
Уже все отключила/включлиа, но к сожалению, так ничего и не поменялось. Даже не знаю, как быть…
Анна,
нужно НЕ включать повторно, а только отключать (и шаблоны тоже) по очереди, затем чистить кэш и проверять. Вы уверены, что отключали все сторонние шаблоны, плагины и прочие расширения?
Если хотите, можете мне написать в почту (со страницы «Контакты») и я попозже вышлю вам перечень «родных» для Joomla 3.2.0 расширений, которые должны быть включены по умолчанию.
Добрый день!
В Joomla 3.2 обновленный TinyMCE
редактирование изображения вставленного в текст материала упростили до описания и размера
кучи возможностей как в joomla 3.1.5 таких как отступ текста от картинки расположение самой картинки и прочее нету
И что теперь делать? Может я чего то дополнительного не нашел в редакторе? Сторонние ставить не хочу.
Спасибо!
Насколько я знаю, теперь это убрали из последней версии TinyMCE, чтобы все было одинаково во всех статьях (по мнению разработчиков), и зависит либо от стандартных настроек, либо от настроек шаблона. Ну а если хочется что-то свое, то нужно теперь подключать свои CSS классы в настройках самого плагина — «Plugin Manager: Editor — TinyMCE». Так что если хочется всегда вручную форматировать картинки, то нужно переключаться в режим исходного кода, или создать свои CSS классы и подключить их к плагину. В другом случае придется устанавливать другой редактор.
Спасибо за информацию.
Зря так поступили.
Статьи не могут быть одинаковыми за редким исключением
а сторонние ставить — могут и не пройти обновления
Вопрос еще!
Не совсем в курсе
Почему на Денвере joomla обновляется через «обновить версию?» ?
А на хосте выдает что есть новые версии, но не обновляется
- обновление начинается и не заканчивается никогда ?
Похожих проблем с обновлением на Joomla 3.2.0 к сожалению много. Большинство из них решается отключением сторонних расширений из-за их несовместимости. Но это не гарантирует, что после обновления, снова подключив сторонние расширения, сайт заработает как нужно. Настоятельно рекомендую перед обновлением сделать полный бэкап файлов и БД, затем обязательно проверить, что все установленные на вашем сайте сторонние компоненты, плагины и шаблоны совместимы с Joomla 3.2.0. И только после проверки, убедившись, что все совместимо, приступать к обновлению реально действующего сайта.
Спасибо!
Но хотел уточнить
Все совершенно одинаково в сайте на Денвере и на Хосте
изменены только 4-и строчки в файле «configuration»
пароль, имя хоста и имя базы данных и пользователь
На Денвере joomla обновляется без всякого
На Хосте как идет загрузка так и до бесконечности
Что не так? Что может быть причиной?
Причин может быть несколько, например из-за конфигурации хостинга: т.е. к примеру если обновление занимает много времени (долгий по времени процесс может быть остановлен сервером) или недостаточно памяти и т.п.
Для начала попробуйте скачать оригинальный архив полной версии Joomla 3.2.0 и залить его на хостинг по FTP (в папку /tmp), а после установить обновление вручную, таким же образом, как установка обычного расширения. Если это не прокатит, то сообщите исходную версию вашей CMS, версию PHP, попробуем что-нибудь придумать. (хотя трудно будет конкретно что-то сказать, не зная что и как у вас установлено и настроено на хостинге). Да, и скажите, в момент «зависания» процесса обновления что вы видите, белый экран или нет? Сайт после неудачной попытки обновления работает или нет?
В крайнем случае можно попросить помощи у хостера, они ведь смогут просмотреть все серверные логи и возможно определят причину.
Процесс обновления идет как обычно — кружок загрузки крутится
Возможно Вы правы с причинами — не позволяет просто хост скоростью и временем
Спасибо за совет о обновлении с самого хоста.
На данный момент задумался о обновлении — TinyMCE ИСПОРТИЛИ.
После обновления на joomla.3.2 упал шаблон JaT3 blank Сам шаблон не сохраняется при изменениях в нем, и не подгружаются стили. На сайте — просто обычный лист с текстом и картинками без каких-либо стилей и верстки… Пробовала перезалить шаблон и плагин T3 framework — безрезультатно. Вот и думаю — а можно ли вернуть джумлу на старую версию?
katerina, сначала проверьте, может уже есть новая версия этого шаблона под Joomla 3.2.
На старую версию откатиться нельзя, такого функционала не предусмотрено в Joomla. Можно прежнюю версию либо поднять из бэкапа (если такой у вас есть), либо поставить с нуля. Но обязательно перед откатом создайте бэкап базы данных текущей версии, чтобы не потерять свои данные в случае установки Joomla с нуля. Бэкап БД можно будет после установки импортировать снова в базу данных, однако нет гарантии, что все пройдет гладко, т.к. в Joomla 3.2 есть изменения в структуре БД.
Да, вы правы, Владимир, перезалить старую версию поверх новой не удалось — сайт сломался совсем))
К сожалению, бэкап, который я делала, без последних изменений на сайте в материалах и модулях.. Но видимо придется вернуться к нему и вновь загружать модули и вносить данные в материалы…
После обновления на 3.2.0 перестала отправляться почта (как в автоматическом режиме (при регистрации клиентов), так и в ручном, при массовой рассылке) выходит сообдщение The mail function has been temporarily disabled on this site, please try again later. Что можно сдеалть?
Зайдите в «Общие настройки -> Сервер (Настройки сервера)» и в блоке «Настройка почты» отключите почту (нажав кнопку «Send mail» -> [Нет]), затем обязательно сохраните настройки кнопкой [Сохранить] в левом верхнем углу панели управления, а после снова включите почту и сохраните настройки.
Еще один способ заставить почту работать:
Зайдите в «Общие настройки -> Сервер (Настройки сервера)» и в блоке «Настройка почты» проверьте настройки почты. Попробуйте сменить «Способ отправки», сохранить настройки, затем вернуть все обратно и снова сохранить. Если это не поможет, тогда зайдите в «Менеджер расширений: Проверка базы данных» и вверху-слева нажмите кнопку «Исправить».
Худший случай: возможно у Вас на сайте используется какой-то плагин или компонент, управляющий почтой, и он возможно несовместим с версией 3.2.0. Тогда отключите его и пробуйте отправить почту стандартным способом.
Михаилу: у меня после обновления также редактор TinyMCE обеднел и не давал возможности задавать параметры для изображений (отступы), решил вопрос заменой редактора JCE Editor 2.3.3.2 Rus — Лучший редактор для Joomla 1.5, 2.5 и 3.0
Попробуйте поманипулировать плагином Language Filter.
_http://www.willows-consulting.com/Joomla/fatal-error-gettag-with-joomla-3-2.html
Nikko320, я пробовал на финальной версии 3.2.0, но у меня нет проблем при включении или отключении обоих плагинов «Система — Фильтр языков» и «Система — Подмена кода языка», и также при манипуляциях с языками для сайта и админки. У меня кроме стандартного English (United Kingdom) стоят и русские языковые пакеты.
Может проблема кроется в том, что у меня только английский для «Язык Контента». Вот что Joomla подсказывает при сменах языков:
Кстати, если например включен плагин «Система — Фильтр языков» и для сайта установлен в настройках русский язык, то при попытке логина можно получить отказ в доступе, так как URL будет не верный:
а должен быть вот такой
Это говорит о том, что НЕ «опубликован так же Язык Контента», о чем Joomla и предупреждала.
Здравствуйте. я как начинающий пользователь не могу загрузить текстовый документ на сайт подскажите как это сделать. Как загрузить текстовый документ на сайт платформа 3.2 и сделать ссылку на этот документ. Спасибо.
qwer, обычно для загрузки файлов на сайт используют протокол FTP. Если у вас есть доступ по FTP на ваш сайт, то для загрузки файлов на него можно использовать например бесплатную программу Filezilla (_http://filezilla.ru).
По ссылке немного не понятно, где вы хотите создать ссылку на этот докуиент? Если где-то в меню вашего сайта на Joomla, то откройте панель управления Joomla, зайдите в раздел «Меню», выберите там нужное меню, в котором хотите разместить ссылку, и создайте в нем новый пункт меню. При создании пункта меню для поля «Тип пункта меню» выберите «Системные ссылки -> Внешний URL», а в поле «Ссылка» введите ссылку на ваш документ (например такую: http ://вашсайт.ru/documents/vash-document.txt).