Обновление с Joomla 2.5 до Joomla 3.x не очень сложный процесс, однако чаще всего мы сталкиваемся с одними и теми же ошибками при обновлении. В этой статье я опишу сам процесс обновления и параллельно рассмотрю возникающие ошибки, для того, чтобы сэкономить время на Google поиск или ждать ответа с форумов.
Важно!
Перед тем как приступать к обновлению сайта, обязательно сделайте копию файловой системы и базы данных MySQL!
Или же проводите обновление на копии вашего сайта. Я это делаю на вновь созданном поддомене и на скопированной базе данных. Нужно не забыть поменять в файле configuration.php настройки на скопированную БД. Еще неплохо было бы вести отдельный файл логов сервера, чтобы потом понимать почему вместо сайта белый экран.
Важно 2!
Перед тем как приступать к обновлению сайта, Вам нужно убедиться, что расширения (компоненты, модули, плагины), установленные на сайте могут поддерживаться новой версией Joomla 3. Все установленные расширения нужно обновлять отдельно, в каждом случае индивидуально.
Считаем, что вышесказанное вы уже сделали.
Походу обновления я буду описывать проблемы, когда что-то у меня пошло не так. Я хочу обновить сайт на Joomla 2.5.14 до версии 3.5. На нём присутствует компонент JComments и несколько сторонних модулей.
Итак, первым делом обновляем все расширения, установленные на сайте до последних версий.
Далее идём в панель управления сайтом и видим... Доброе сообщение "версия 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';