SMF 1.1 => SMF 2.0
by hackprime
Небольшое руководство о том, как обновить Simple Machune Forum c версии 1.1 (или 1.0) до 2.0.
На сервере имеем: Linux CentOS, nginx 0.98, MySQL 5.1.53, PHP 5.2.
Поехали.
1) Делаем бэкап папки с форумам.
2) Делаем бэкап базы данных.
3) Очищаем таблицы с поисковым кэшем.
mysql> USE %database_with_smf_name%
mysql> TRUNCATE TABLE smf_log_search_messages;
mysql> TRUNCATE TABLE smf_log_search_results;
mysql> TRUNCATE TABLE smf_log_search_subjects;
mysql> TRUNCATE TABLE smf_log_search_topics;
Примечание: чтобы не возникло ошибки при обновлении, создайте в каждой из таблиц по одной пустой записи</li>
4) Теперь, скачиваем с оф.сайта пакет обновлений SMF 2.0 (Lagre upgrade). Помимо этого стоит скачать нужные языковые паки (русский). Распаковываем и перемешиваем. Готовую «смесь» загружаем на сервер в директорию с форумом (с перезаписью существующих файлов).
5) Запускаем в браузере скрипт http://domain.com/path_to_smf/upgrade.php, и, следуя указаниям, обновляем форум.
-
Примечание 1: в случае, если в корне форумной директории присутствует файл установки (install.php), то вас автоматически перенаправит на него. Для апгрейда форума удалите файл установки.
-
Примечание 2: для UNIX-подобных систем — файл /Settings.php и директория /cache/должны быть доступны для записи всем.
Возможные ошибки:
1) После обновления, при попытки зайти на форум, появится надпись «Невозможно загрузить ‘main’ шаблон.». Это означает, что по какой-то причине дирректория с темой форума по умолчанию пропала из /Themes/, просто верните её на место (Мы же сделали бэкапы, правильно?) и всё заработает.
2) Весь кириллистический текст, полученный из базы данных, будет похож на квадратики или на знаки вопросов в тёмных ромбиках. Это означает, что где-то ломается исходная кодировка.
Сначала идём в базу данных, в таблицу smf_settings, и ищем там строку, у которой поле variable равняется ‘global_character_set’. Если его там нет, то вставляем строку с таким параметром, где в поле value записываем ‘UTF-8’ (Мы же всегда используем UTF-8, правда?).
Теперь проверяем форум. Если русские буквы в названии тем видны — обновление завершено, поздравляю. Если нет… используем brute force!
Открываем файл /Sources/Subs-Db-mysql.php. Находим функцию smf_db_initiate и в самый её конец, перед оператором return, вставляем одну строку:
@mysql_query("SET NAMES UTF8", $connection);
Сохраняем. Проверяем форум — всё работает.
Источники: