Обновление phpBB 3.1.x до phpBB 3.2.x

На тесте обновлю форум phpBB 3.1.9 до версии phpBB 3.2.2.

Системные требования phpBB 3.2 при необходимости можно посмотреть тут https://www.phpbb.com/support/docs/en/3.2/ug/

Обязательно делаем резервную копию базы и файлов форума.

Рекомендую выполнить обновление на тестовом виртуальном сервере, запустив там копию форума из резервных копий, так как в моем случае возникали ошибки и на их устранение ушло время, а потом уже можно аналогично быстро обновить на основном.

Приступим к обновлению, скачиваем архив с новой версией phpBB 3.2.x и распаковываем его:

wget https://www.phpbb.com/files/release/phpBB-3.2.2.zip
unzip phpBB-3.2.2.zip

В распакованных данных форума удалим файл config.php и директории files/, images/, store/.

В данных phpBB что находятся на веб сервере удалим всё кроме директорий ext/, files/, images/, store/ и файла config.php.

Переместим оставшиеся скачанные данные в директорию с данными форума, согласимся на перезапись файла в директории ext/.

Если изменятся права на файлы и владелец, то например можно указать их так:

sudo chown -R www-data:www-data /var/www/forum/

Если база данных форума большая, то можно выполнить команду в корневой директории форума:

php ./bin/phpbbcli.php db:migrate --safe-mode

Откроем в браузере адрес форума добавив в конце /install/app.php/update или /install/database_update.php, выберем вкладку «Update», выберем «Update database only», запустим процесс обновления и дождемся завершения.

После успешного обновления удалим директорию install:

rm install

Смотрите также мои статьи:
Решение ошибки «A module already exists» и «The installer detected a timeout» при обновлении phpBB
Импорт и экспорт MySQL баз данных
Обновление phpBB 3.1.8 до phpBB 3.1.9
Обновление phpBB 3.0.x на phpBB 3.1.x
Прочее о phpBB

Решение ошибки «A module already exists» и «The installer detected a timeout» при обновлении phpBB

Обновлял однажды phpBB 3.1.9 до версии phpBB 3.2.2 и заметил следующую ошибку:

The installer detected a timeout
The installer has detected a timeout, you may try to refresh the page, which may lead to data corruption. We suggest that you either increase your timeout settings or try to use the CLI.

Очистил таблицу «phpbb_migrations» в базе форума:

TRUNCATE TABLE phpbb_migrations;

И снова запустил обновление, но получил уже другую ошибку:

A module already exists: UCP_AUTH_LINK_MANAGE

Стандартный модуль Profile естественно был установлен, его можно было отключить, но не удалить.
Поэтому, я нашел его в таблице «phpbb_modules» и удалил, тем самым заставив скрипт обновления думать что он не установлен:

SELECT * FROM `phpbb_modules` WHERE `module_langname` LIKE 'UCP_AUTH_LINK_MANAGE';

После продолжения обновления заметил еще ошибку:

A module already exists: ACP_CONTACT_SETTINGS

Модуль Contact даже не был установлен, после этого я также нашел его в таблице и удалил, а также нашел и удалил еще раз UCP_AUTH_LINK_MANAGE, так как скрипт обновления его восстановил:

SELECT * FROM `phpbb_modules` WHERE `module_langname` LIKE 'ACP_CONTACT_SETTINGS';
SELECT * FROM `phpbb_modules` WHERE `module_langname` LIKE 'UCP_AUTH_LINK_MANAGE';

После удаления модулей из таблицы «phpbb_modules» я очистил таблицу «phpbb_migrations»:

TRUNCATE TABLE phpbb_migrations;

Запустил обновление phpBB и оно завершилось успешно.

Смотрите также:
Обновление phpBB 3.0.x на phpBB 3.1.x

Скрытие имени сайта в шапке phpBB

Делал как-то большой логотип в шапке форума phpBB и естественно имя сайта и описание было наложено на него и мешало.
Чтобы скрыть имя сайта и описание в директории активной темы (стиля) найдем файл /style/stylename/template/overall_header.html

Откроем его в текстовом редакторе и найдём в нем две следующие строки:

<h1>{SITENAME}</h1>
<p>{SITE_DESCRIPTION}</p>

Как раз они и отвечают за отображение имени сайта и описания в шапке форума, удалять их не будем, вдруг пригодятся, а просто закомментируем:

<!-- <h1>{SITENAME}</h1>
<p>{SITE_DESCRIPTION}</p> -->

После этого очистим кеш форума нажав на кнопку в пенели администратора. Все.

Обновление phpBB 3.1.8 до phpBB 3.1.9

Сегодня обновил форум phpBB 3.1.8 на phpBB 3.1.9 автоматическим пакетом обновления.

Ниже опишу порядок действий для выполнения обновления:

1) Сделаем резервную копию файлов и базы форума.
В Linux это можно сделать например командами:

sudo tar -cvjf backup_forum_files.tar.bz2 /var/www/forum/
mysqldump -u ПОЛЬЗОВАТЕЛЬ -h localhost -p БАЗА | gzip -c > backup_forum_base.sql.gz

2) Теперь нужно скачать архив с пакетом обновления https://www.phpbb.com/downloads/#update

3) Распакуем из архива только install/ и vendor/ в директорию с форумом. Если папка install находится в директории с форумом, он автоматически отключается, то есть никто на нем не будет писать и ходить.
Если файлы перемещали из терминала, то на них возможно будут установлены права владельца от которого перемещали и web сервер не сможет получить к ним доступ, поэтому укажем группу и владельца от которого работает web север командами:

sudo chown -R user:user /var/www/forum/install/
sudo chown -R user:user /var/www/forum/vendor/

4) Откроем в браузере ссылку на форум добавив к ней install, например http://example.com/forum/install/.
Теперь осталось нажать Update и следовать инструкциям.

Если в коде каких-то файлов вы делали изменения и они затрагиваются обновлением, об этому будет сообщено и предложено выбрать какую версию файлов оставить, на мой взгляд лучше ставить новую версию из обновления, а изменения потом внести после обновления сравнив оба файла например в Notepad++ с использованием плагина Notepad++ Compare plugin который показывает отличия в коде файлов.

Обновление phpBB 3.0.x на phpBB 3.1.x

Обновлял недавно phpBB 3.0.12 на 3.1.8, авто обновление тут не поможет, поэтому опишу по пунктам процедуру обновления:

1) Обязательно сделаем резервную копию файлов и базы данных форума. Cделаем стандартной темой prosilver, отключим остальные стили и модули, так как они не будут работать на новой версии phpBB.

2) Скачаем архив с новой версией phpBB с официального сайта https://www.phpbb.com/downloads/

3) На сервере удалим все файлы и папки форума кроме файла config.php и директорий images, files, store.

4) Распакуем скачанный архив, удалим файл config.php и директории images, files, store. Переместим остальные файлы на сервер.

5) В браузере откроем адрес форума указав на скрипт обновления базы, например http://FORUM/install/database_update.php и следуя инструкциям выполним обновление.
На этом этапе у меня произошла ошибка:

PHP Fatal error:  Uncaught exception 'Twig_Error_Loader' with message 'Unable to find template "login_body.html" ...
...

Подозреваю что информация в базе данных, в таблице phpbb_migrations не дала скрипту полностью выполнить обновление. По этому решил проблему восстановив старую базу форума, очистив эту таблицу phpbb_migrations через phpMyAdmin или можно sql запросом:

TRUNCATE TABLE phpbb_migrations

И снова выполнив скрипт обновления базы http://FORUM/install/database_update.php, который на этот раз выполнил обновление правильно.

По окончанию обновления удалим директорию install и очистим кеш через панель администрирования форума. Готово.

Смотрите также:
Решение ошибки «A module already exists» и «The installer detected a timeout» при обновлении phpBB

Установка phpBB расширения OneALL Social Login

Кратко опишу по пунктам как установить расширение OneALL Social Login позволяющее входить на форум используя учетные записи социальных сетей.

1) Скачаем расширение OneALL Social Login с официального сайта https://docs.oneall.com/plugins/guide/social-login-phpbb/

2) Из скачанного архива распакуем файлы в директорию phpBB ext/oneall/sociallogin

3) Активируем расширение перейдя в панель администратора phpBB -> вкладка «ПЕРСОНАЛИЗАЦИЯ» и напротив «OneAll Social Login» нажмем «Включить».

4) Очистим кеш форума открыв вкладку «ОБЩИЕ» -> «Очистить кеш» -> «Выполнить».

5) Настроим расширение открыв «НАСТРОЙКА РАСШИРЕНИЙ». Заполним необходимые поля и укажем публичный и приватный ключ которые можно получить после регистрации в OneALL, ссылка на регистрацию присутствует над полями где вводить ключи.

Все.

Как установить движок форума phpBB в Ubuntu

Приведу пример простой установки phpBB в Ubuntu.

Обновим списки пакетов и установим phpBB:

sudo apt-get update
sudo apt-get install imagemagick apache2 mysql-server mysql-client phpbb3

После предыдущей команды установки автоматически будет создан файл конфигурации в директории /etc/apache2/conf-enabled/phpbb3.conf, благодаря которому форум уже можно открыть набрав в адресной строке http://ХОСТ/phpbb (где ХОСТ — домен или IP вашего сервера).

Если конфигурационный файл не был создан, то можно вручную сделать символическую ссылку на директорию с http-файлами phpBB, например:

sudo ln -s /usr/share/phpbb3/www /var/www/forum

Перезапустим web-сервер apache2 чтобы изменения вступили в силу:

sudo /etc/init.d/apache2 restart

Стандартный логин к phpBB: admin
Стандартный пароль к phpBB: admin

Вот и все.

Как убрать статистику с главной страницы форума phpBB

Чтобы убрать статистику с главной страницы форума phpBB, закомментируем определенные строки в файле шаблона используемой темы.
Переходим в папку template и откроем в текстовом или html редакторе файл index_body.html.
Найдем следующие строки:

<h3>{L_STATISTICS}</h3>
<p>{TOTAL_POSTS} &bull; {TOTAL_TOPICS} &bull; {TOTAL_USERS} &bull; {NEWEST_USER}</p>

И закомментируем их:

<!-- <h3>{L_STATISTICS}</h3> -->
<!-- <p>{TOTAL_POSTS} &bull; {TOTAL_TOPICS} &bull; {TOTAL_USERS} &bull; {NEWEST_USER}</p> -->

После изменений в файлах обязательно нужно очистить кэш через панель управления или вручную.

Список пользователей онлайн, легенду модераторов и администраторов, дни рождения можно отключить в панели управления форумом: «Главная» -> «Нагрузка на сервер«.

Вставка рекламы между сообщениями форума phpBB

Вставка рекламы между сообщениями форума phpBB делается элементарно, необходимо всего лишь в файле активной темы viewtopic_body.html найти фрагмент кода:

<!-- END postrow -->

И перед ним вставить следующее:

<!-- IF (postrow.S_ROW_COUNT eq 0) || (S_USER_LOGGED_IN eq 0 && postrow.S_ROW_COUNT eq 4) -->

<table class="tablebg" width="100%" cellspacing="0">
<tr class="row1">

<td class="profile" align="center" valign="middle">
<b class="postauthor">Реклама</b>
</td>
<td class="row3h" width="100%">
</td>
</tr>

<tr class="row1">

<td valign="top" class="profile">
<table cellspacing="4" align="center" width="150">

</table>

<span class="postdetails">

</span>

</td>
<td valign="top" colspan="2">
<table width="100%" cellspacing="5">
<tr>
<td>
<table width="100%" cellspacing="0">
<tr valign="middle">
<td class="gensmall" align="{S_CONTENT_FLOW_END}">

</td>
</tr>
</table>

<div class="postbody">

КОД РЕКЛАМЫ

</div>
</td>
</tr>
</table>
</td>
</tr>

<tr class="row1">

<td align="center" class="profile">

</td>
<td colspan="2"></td>
</tr>

<tr>
<td class="spacer" colspan="3" height="1"><img src="images/spacer.gif" alt="" width="1" height="1" /></td>
</tr>
</table>
<!-- ENDIF -->

В итоге зарегистрированным пользователям после первого сообщения будет отображаться реклама, а гостям после первого и пятого.
Порядок можно изменить отредактировав строку (где 0 означает после первого, 4 после пятого):

<!— IF (postrow.S_ROW_COUNT eq 0) || (S_USER_LOGGED_IN eq 0 && postrow.S_ROW_COUNT eq 4) —>

После изменения файла шаблона необходимо очистить кэш через админку либо в директории cache, чтобы не ждать когда он обновится и изменения вступят в силу.