RkBlog

Hardware, programming and astronomy tutorials and reviews.

Kilka phpBB w jednej bazie

Opis modyfikacji phpBB w celu uruchomienia kilku częściowo zintegrowanych instalacji skryptu.

Cel: chcemy kilka for phpBB korzystających ze wspólnej tabeli użytkowników, na 1 bazie danych.

1. Zainstaluj w oddzielnych katalogach odpowiednią ilość for phpbb. Dla uproszczenia forum "główne", czyli to które będzie "dawało" dane o userach innym forom zainstaluj bez prefixu a jeżeli musisz to daj np. "main".
2. W podległych forach otwórz includes/constants.php i znajdź listę tabel i usuń $table_prefix z poniższych definicji nazw tabel:
define('GROUPS_TABLE', 'groups');
define('USER_GROUP_TABLE', 'user_group');
define('USERS_TABLE', 'users');
define('SESSIONS_TABLE', 'sessions');
Jeżeli forum główne ma prefix to dodaj go do każdej nazwy, np przy prefixie "main" będziemy mieć "main_groups". Zrobione, powinno wszystko działać. Teraz zrób kopię zapasową całej bazy (jeżeli wszystko działa). Następnie w celach porządkowych wywal z podległych for tabele:
podległy_users;
podległy_user_group;
podległy_groups;
podległy_sessions;
Kopia była po to że tutorial na oficjalnej stronie phpbb ostrzega że nowe wersje mogą się domagać tych tabel (mimo iż są nieużywane). Jeżeli działa nadal to fajnie, jeżeli coś się rzuca to usuń wszystkie tabele i wrzuć zrobioną wcześniej kopię bazy danych. W przypadku phpbb by przemo powinno również działać.

Można też zrobić to na 1 kopii phpBB ale musimy dysponować domenami/subdomenami (nie aliasami). W to samo miejsce (gdzie jest forum) kierujemy kilka domen/subdomen, tak by każda otwierała zainstalowane phpbb. Następnie wykonaj kopię bazy danych tego forum, otwórz w wordpadzie i zmień prefix ("zamień wszystko") na inny. Zapisz i wrzuć kopię, zmień prefix i wrzuć.. aż osiągniesz liczbę kopii równą ilości rządanych for. Następnie edytuj includes/constants.php jak podano. Następnie znajdź (chyba config.php) miejsce gdzie zdefiniowany jest $table_prefix.
$table_prefix = 'prefixglowny';
Zamień na:
IF ($_SERVER[SERVER_NAME]=='domena glowna.pl') {
$table_prefix = 'prefixglowny';
}
ElseIF($_SERVER[SERVER_NAME]=='subdomena1.pl')
{
$table_prefix = 'prefixglowny';
}
... powtarzanie elseif z podaniem kolejnych sub/domen i prefixów
else
{
die('bląd phpbb multisites - brak prefixu dla tej domeny');
}
Zanim to zrobisz zrób nową stronę w php o kodzie:
echo "$_SERVER[SERVER_NAME]";
Wrzuć do katalogu z phpbb i odpal w przeglądarce poprzez wszystkie sub/domeny. Jeżeli zwraca nazwę domeny to dobrze, skopiuj go do powyżeszgo kodu z IFem. Jeżeli jest czysto to zmień $_SERVER[SERVER_NAME] na $SERVER_NAME i sprawdź.... gdy wszystko działa wchodząc przez daną sub/domenę na nasze forum odczytane zostaną tabele o określonym prefixie, mimo iż wszystkie sub/domeny kierują w to samo miejsce, na ten sam zestaw plików phpbb :)
RkBlog

11 July 2008;

Comment article