Обновим форум с версии 3.2.9 на версию 3.3.0. Текущий форум работает на IIS. PHP версии 5.6.31. Минимально поддерживаемая phpBB 3.3 Proteus версия PHP повышена до PHP 7.1.3. Так что вместе с форумом придётся обновить PHP. Кроме того, в новой версии форума отказываются работать многие расширения, будем их чинить.
Подготовительные работы
PHP
Сперва установим PHP 7.3.7 на IIS. Установим также PHP Manager for IIS, чтобы в любой момент переключить версию PHP. Про установку PHP на IIS написал здесь:
Устанавливаем. Без новой версии PHP не удастся даже запустить инсталлятор phpBB 3.3.0.
У меня большая база данных, поэтому обновлять саму базу форума будем через командную строку. Поскольку у меня установлено одновременно несколько версий PHP, то настроим серверные переменные так, чтобы версия PHP 7.3.7 была в приоритете.
Правой кнопкой на "Мой компьютер", свойства.
Advanced system settings.
Вкладка Advanced > Environment Variables.
В разделе System variables выделяем параметр Path и нажимаем Edit.
Находим PHP v7.3 и перемещаем кнопкой Move Up выше остальных версий PHP. Ok. Сохраняем изменения.
Расширения
Подготовим имеющиеся расширения к переходу на новую версию. В первую очередь — обновите все свои расширения до последней версии.
Board Rules у меня требует обновления... Ссылка "Перепроверить все версии" поможет.
Устанавливаем расширение [3.2][3.3][RC] Extension .yml check.
https://www.phpbb.com/community/viewtopic.php?t=2528456
Скачиваем, распаковываем, устанавливаем.
Включаем новое расширение.
Появляется новая ссылка в Персонализация > Управление расширениями > Extension .yml check.
Данное расширение проверяет у других расширений синтаксис YML файлов на соответствие phpBB 3.3. Скроллим вниз.
Красным помечены расширения с ошибками. Можно нажать на YML файл справа и увидеть содержимое и предлагаемый вариант исправления. Есть два распространённых бага.
- Pattern нужно заменить на path.
- Расставить обязательные кавычки.
Вот пример исправления для pattern:
Вот пример исправления для кавычек:
Внесите изменения в файлы расширений, вы можете воспользоваться предлагаемым кодом, но будьте осторожны, проверяйте. Случается, что Extension .yml check предлагает некорректную замену, как, например, здесь:
Видно, что правая кавычка уехала куда-то далеко. Правим файлы до тех пор, пока все расширения не позеленеют. К сожалению, это не позволяет исправить все ошибки. Часть расширений так и не заработает без дополнительного вмешательства. Решение проблем с некоторыми распространёнными расширениями рассмотрим после обновления форума.
Обновление на phpBB 3.3
Инструкция по установке:
https://www.phpbb.com/support/docs/en/3.3/ug/upgradeguide/upgrade32/
По инструкции выполняем обновление.
Скачиваем дистрибутив phpBB 3.3:
https://www.phpbb.com/downloads/
Нас интересует full 3.3.0 package.
Скачиваем phpBB-3.3.0.zip и распаковываем в отдельную директорию.
В настройках конференции устанавливаем стиль prosilver.
Персонализация > стили. Деактивируем остальные стили.
Мой стиль — prosilver Special Edition, мной специально отредактирован. Он старый, для версии 3.2.0, удалю его, потом новый сделаю, это уже отдельная история, которая здесь не рассматривается.
Удаляю свой старый стиль.
Теперь у форума один стиль — prosilver.
Переходим к расширениям.
Отключаем все.
Снова переходим в настройки конференции и меняем язык на British English.
Персонализация > языковые пакеты.
Удаляем все пакеты кроме British English.
В распакованном нами новом дистрибутиве удаляем:
- files
- images
- store
- config.php
- web.config
Останавливаем сайт.
Перезапускаем IIS:
iisreset
Иногда IIS зажимает некоторые файлы и их не удаётся удалить, перезапуск помогает.
Удаляем на сайте всё кроме:
- ext
- files
- images
- store
- config.php
- web.config
- и ваши собственные файлы, не относящиеся к форуму
Копируем с заменой всё из распакованной папки дистрибутива на сайт.
Дожидаемся окончания копирования.
Пришло время обновить базу. Запускаем командную строку от администратора. Переходим в папку сайта:
cd C:\ваш_сайт
Выполняем:
php ./bin/phpbbcli.php db:migrate --safe-mode
Естественно, php запускается из версии 7.3.7, переменную Path мы для этого и меняли. Получается нечто такое:
Видим [OK] The database update was successful. В IIS запускаем сайт.
Из папки сайта удаляем директорию install.
Заходим по ссылке:
https://www.phpbb.com/languages/
И качаем перевод форума для версии 3.3.
Я скачиваю russian_2_1_3.zip. Распаковываем.
Копируем содержимое в корень сайта.
Текущую версию PHP сайта на IIS можно посмотреть в PHP Manager.
Если попытаться открыть сайт, то увидим ошибку:
You are running an unsupported PHP version. Please upgrade to PHP 7.1.3 or higher before trying to install or update to phpBB 3.3
В PHP Manager меняем версию PHP на 7.3.7.
Проверяем работу сайта.
Сайт заработал. Заходим в админку.
Версия PHP 7.3.7, версия форума 3.3.0. Обновление прошло успешно.
Приводим всё в порядок
Теперь нужно вернуть все настройки на прежние. Русскую локализацию мы уже скачали, включим. Переходим в Customize > Language packs.
Устанавливаем русский язык — Install.
В Board settings устанавливаем Default language — Русский.
Снова возвращаемся в Customize > Language pack, удаляем British English.
После удаления все пользователи начинают использовать русский язык, интерфейс админки теперь снова на русском.
Теперь можно снова установить British English, пусть будет.
У нас два языка, русский — основной.
На самом деле вы устанавливайте языковые пакеты те, которые нужны именно вашему форуму.
А теперь самое интересное, начинаем по одному включать расширения обратно.
Некоторые у меня включились без проблем, а некоторые — нет. Рассмотрим способы лечения некоторых расширений.
Profile Side switcher
Profile Side switcher версии 1.0.0 у меня при включении сломал форум. Отключаем расширение (или не включаем), нажимаем "Удалить данные".
Решение проблемы простое, обновить расширение до версии 1.0.1.
https://www.phpbbguru.net/community/viewtopic.php?t=42377
Обновляем расширение на 1.0.1.
Расширение Profile Side switcher заработало.
Contact Admin
Расширение Contact Admin 1.1.10 не заработало.
Решение — редактируем в расширении файл ext.php.
Правим код, находим функцию is_enableable()
public function is_enableable()
{
$config = $this->container->get('config');
// only allow install between 3.1.3 for events added and 3.4 due to 3.4 removing upload function from includes/functions_posting per 3.2
// phpBB only supports 3.2 and so will I
return phpbb_version_compare($config['version'], '3.2', '>=') && phpbb_version_compare($config['version'], '3.3', '<=');
}
Меняем на:
public function is_enableable()
{
return phpbb_version_compare(PHPBB_VERSION, '3.2.0', '>=');
}
После этого расширение работает.
Lightbox
Расширение Lightbox после включения форум не поломало, но сам эффект Lightbox перестал работать. Решение есть здесь:
https://www.phpbb.com/customise/db/extension/lightbox/support/topic/211641?p=722721#p722721
А именно, в файле resizer.js находим код:
$(this).load();
И меняем на:
$(this).trigger('load');
После этих изменения Lightbox работает как положено.
Yandex Metrika
Расширение Yandex Metrika написано мной. Версия 1.0.2 не совместима с phpBB 3.3. Решение простое, запомните код своего счётчика Яндекс метрики, удалите расширение, сотрите папку с расширением. Скачайте и установите Yandex Metrika 1.0.3. Введите код в настройках форума.
Расширение Yandex Metrika для phpBB 3.3
Скачиваем Yandex Metrika 1.0.3. Старую папку ya_metrika удаляем, новую yametrika вставляем. В этом вся соль, в phpBB 3.3 нельзя в имени расширения использовать знак подчёркивания. В коде также имеются соответствующие изменения.
Затем я создал новый стиль для форума и внёс свои правки, здесь создание стилей не рассматриваю.
Пример форума на phpBB 3.3.0:
И самое главное! Регистрируем новый ключ ReCaptcha на https://www.google.com/recaptcha и переходим на новую невидимую капчу:
P.S.
Бонус — исправление ошибки при удалении сразу нескольких сообщений: