1

SMF 1.1 => SMF 2.0

Небольшое руководство о том, как обновить 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;

    Примечание: чтобы не возникло ошибки при обновлении, создайте в каждой из таблиц по одной пустой записи

  4. Теперь, скачиваем с оф.сайта пакет обновлений SMF 2.0 (Lagre upgrade). Помимо этого стоит скачать нужные языковые паки (русский). Распаковываем и перемешиваем. Готовую «смесь» загружаем на сервер в директорию с форумом (с перезаписью существующих файлов).
  5. Запускаем в браузере скрипт http://domain.com/path_to_smf/upgrade.php, и, следуя указаниям, обновляем форум.
    Примечание 1: в случае, если в корне форумной директории присутствует файл установки (install.php), то вас автоматически перенаправит на него. Для апгрейда форума удалите файл установки.
    Примечание 2: для UNIX-подобных систем — файл /Settings.php и директория /cache/должны быть доступны для записи всем.
  6. ???????
  7. PROFIT!

Возможные ошибки:

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);

Сохраняем. Проверяем форум — всё работает.

Источники:

  1. Официальное руководство на английском языке
  2. Обновление smf 1.0.*, smf 1.1.* -SMF 2.0 — Тема на русскоязычном форуме SMF
  3. Upgrade SMF 1.1.8 to SMF 2.0 RC3