Обновление Joomla 2.5 на Joomla 3.5

Обновление с Joomla 2.5 до Joomla 3.x не очень сложный процесс, однако чаще всего мы сталкиваемся с одними и теми же ошибками при обновлении. В этой статье я опишу сам процесс обновления и параллельно рассмотрю  возникающие ошибки, для того, чтобы сэкономить время на Google поиск или ждать ответа с форумов.

Важно!

Перед тем как приступать к обновлению сайта, обязательно сделайте копию файловой системы и базы данных MySQL!

Или же проводите обновление на копии вашего сайта. Я это делаю на вновь созданном поддомене и на скопированной базе данных. Нужно не забыть поменять в файле configuration.php настройки на скопированную БД. Еще неплохо было бы вести отдельный файл логов сервера, чтобы потом понимать почему вместо сайта белый экран.

Важно 2!

Перед тем как приступать к обновлению сайта, Вам нужно убедиться, что расширения (компоненты, модули, плагины), установленные на сайте могут поддерживаться новой версией Joomla 3. Все установленные расширения нужно обновлять отдельно, в каждом случае индивидуально.

Считаем, что вышесказанное вы уже сделали.

Походу обновления я буду описывать проблемы, когда что-то у меня пошло не так. Я хочу обновить сайт на Joomla 2.5.14 до версии 3.5. На нём присутствует компонент JComments и несколько сторонних модулей.

Итак, первым делом обновляем все расширения, установленные на сайте до последних версий.

Далее идём в панель управления сайтом и видим... Доброе сообщение "версия Joomla! самая новая". Но мы чётко понимаем, что это совсем не так! Поэтому заходим в "эту кнопочку" ;)

Версия Joomla! самая новая

Для начала мне нужно обновить версию Joomla до последней в линейке 2.5 - это версия Joomla 2.5.28. (Учтите, что если вы произведёте обновление с версии ниже чем 2.5.28 сразу на 3.x, то скорее всего получите мёртвый сайт.)

Сохраняемся, идём в Расширения -> Менеджер расширений -> Обновления

Обновляем то, что может обновиться (у меня, к примеру, не смогли обновиться 2 расширения).

Далее очищаем кэш обновлений (если появились новые обновления - обновляем ещё раз).

Для этого, в настройках обновлений выбираем из выпадающего списка Дистрибутивы Joomla с длительным периодои поддержки. 

Если после этого не появилось найденных обновлений, идем в менеджер расширений -> Обновления и очищаем кэш. Затем снова проверяем обновления. У меня было найдено обновление Joomla 2.5.28, чего и добивались... Кстати, если в итоге не получилось этого сделать, а скорее это так, то можно скачать файл обновления Joomla до версии 2.5.28 и обновиться вручную...

Для этого скачиваем нужный нам пакет, и заливаем файлы по фтп с заменой.

Итак, жмём на кнопку "Установить обновление"... Ждём немного... В итоге, должно появиться радостное сообщение "Ваш сайт был успешно обновлен. Версия Joomla 2.5.28. " ОК!

Потом идём в Менеджер расширений -> Управление и отключаем все компоненты, модули и плагины, которые устанавливали самостоятельно. Я отключил всё, что касается JComments, была нестандартная капча, плагин Sourcer и ещё что-то ;)

Далее опять заходим в настройки обновлений и в выпадающем списке выбираем - Дистрибутивы Joomla с краткосрочной поддержкой.

 

Если Joomla сразу не найдёт обновление, опять повторяем процедуру очистки кэша в менеджере расширений. Возвращаемся в панель управления - видим, что найдено обновление Joomla 3.5 .

Опять заходим "В кнопочку" и жмём Установить обновление

 

Наблюдаем это...

Иииии.....

После установки обновления Joomla меня выкинуло на страницу входа в админку, а вместо самого сайта - белый экран! О ужас! Этого боится каждый сайтовод! Именно поэтому все говорят - на рабочем сайте обновлений не делайте, делайте их на копиях сайта! Делайте бэкапы!

Ну ничего страшного, соответственно "морда" сайта не отображалась потому что шаблон сайта не поддерживается третьей жумлой. Всё равно я собирался его менять на другой.

Заходим в админку, в менеджер шаблонов, ставим любой стандартный... Всё сайт отображается, контент на месте - далее дело техники!

Спустя пару дней после обновления до Jоomla 3.5 выявился косяк! Спустя какое-то время, сайт начал выпадать в 500 ошибку, чтобы его перезапустить, требовалось перезапустить весь сервер (Apache). Просмотрев логи, выяснилось, что виновен в этом плагин Sourcer, который позволял размещать произвольный php и javascript код в тексте материала. Пришлось отключить его. Ошибка в логах была такая:

[09:37:26.584805 2016] [:error] [pid 7911] PHP Fatal error:  Cannot redeclare class NNCache in /www/site.com/plugins/system/nnframework/helpers/cache.php on line 14,

Кроме того, выявил, что после обновления до Jоomla 3.5 не работают кнопки "Сохранить" и "Сохранить и закрыть" в админке сайта. Мне помогла в этом случае комбинация клавиш Ctrl + F5...

Обновление JComments 2.3.0 до JComments 3.0.5

Теперь о компоненте JComments. Потерять его данные мне ну очень уж не хотелось - слишком много люди откоментировали статей.

Тут всё обошлось... Следовал инструкциям на официальном сайте

Шаблон у меня был стандартный, поэтому просто удалил версию JComments 2.3.0 через менеджер расширений и установил свежескачанный пакет JComments 3.0.5. Всё! Комментарии вернулись на свои места.

Ссылка в логотипе ссылается на текущую страницу, а не на главную

Следующая очень распространённая ошибка, которая встречается у многих (но не у всех), кто обновился до версии 3.5 - логотип сайта перестал ссылаться на главную страницу, а вместо этого, ссылается на текущую страницу сайта. Выход нашёлся может быть и не самый изящный, но рабочий. Будем надеяться, что при выходе нового обновления разработчики уже пофиксят данный баг.

Итак, решение:

Нам нужно поправить файл плагина SEF. Этот файл расположен тут

/your.site/plugins/system/sef/sef.php

В данном файле, меняем в 93 строке, в самом её конце знак "+" на "*". Должно получиться так

было: $regex  = '#\s+' . $attribute . '"(?!/|' . $protocols . '|\#|\')([^"]+)"#m';
стало: $regex  = '#\s+' . $attribute . '"(?!/|' . $protocols . '|\#|\')([^"]*)"#m';

Для комментирования недостаточно прав! Наверное нужно зарегистрироваться...