Итак форум на четверке намбер 2.
В этом посте я опишу особенности, с которыми столкнулся при установке еще одного форума на рандомно выбранном хостинге. И в частности
на хостинге с php 5.4
Поначалу все происходило как обычно. Взял дистрибутив 4.2.0, залил его на хостинг, и...
Нифига. Ошибка установки.
Посмотрел, версия php на хостинге 5.4. Понятненько.
Идем в папку инсталл, открываем файл init.php, находим строку
Заккоментируем ее, выполняем рекомендации по ссылке:
https://wmboard.net/vbulletin-4-x-x/...html#post62347 , и запускаем инсталляцию.
Форум установился как часы. Даже не подозревая сколь долго придется колупать этот форум, я пошел в админку устанавливать русификатор. Выбрал русификатор в utf-8, загрузил язык, открыл главную форума, и....
А весь форум оказался вот таким: ?????
Вместо кириллицы все оказалось в знаках вопроса. Конечно, первым делом у меня была мысль взять на месяц другой хостинг, где я уже ставил четверку vBulletin, там все реализовать, а затем переехать. Но ведь это не дело. Но ведь нужно разобраться со всеми тонкостями установки форума, с кодировками базы данных, чтобы в дальнейшем, если придется тратить на установку и настройку минимальное количество времени. Так я и моя тень на этом и порешили.
Так как же правильно установить четверку на обычном, стандартном шаред хостинге, чтобы не было проблем в дальнейшем?
Рассказываю пошагово.
Перво наперво идем в ПМА, кликаем на вашу базу данных, и смотрим сопоставление таблиц. У меня, как и на большинстве стандартных хостингов оно оказалось в кодировке latin1
Соответственно, если кликнуть на таблицу, то и индексы со столбцами также будут в кодировке latin1
Ремонт нашей базы данных нужно начинать сразу после установки форума, ДО установки русификатора, на абсолютно чистый форум.
И что делать дальше?
Если вручную делать сопоставление для каждой таблицы в кодировке utf8, то и полдня можно просидеть. В четверке 246 таблиц, в каждой таблице черт знает сколько полей, и так далее. Естественно, меня такое не устраивало, и как-то хотелось автоматизировать процесс. И решение было найдено. Дело в том, что php 5 и выше позволяет делать запрос:
Но для каждого поля подобный запрос делать не выход, поэтому делаем вызов запросов для всех таблиц вашей БД
Где имя_вашей_бд - имя вашей базы данных.
После данного запроса мы получим список следующего вида:
Где имя_вашей_бд - имя вашей базы данных, и количеством в 246 штук.
Теперь копируем это все, и выполняем сиквел запрос. Я бы рекомендовал эти 246 запросов разбить на части, по 50-100 штук, иначе хостинг может уйти в даун, если конечно это не сервер и вы работаете на шареде.
Казалось бы все? Но нет. На запросе
выскакивает ошибка, и таблица не переводится в нужную нам кодировку. Ошибка появляется следующего вида:
Поэтому
перед тем, как дробить наши 246 запросов, и менять сопоставление кодировки, необходимо привести в порядок таблицу phrase. Это фразы vBulletin. Не знаю чего там намудрили, но во фразах есть четыре поля:
common.langDirLTR
common.langDirLtr
и
common.langDirRTL
common.langDirRtl
Поэтому тупая БД видит дубликаты, и ничего не меняет. Я просто удалил два поля common.langDirLTR и common.langDirRTL и оставил дубли в нижнем регистре.
Все. Мы привели в порядок таблицу, сделали 246 запросов к БД, и все вобловские таблицы где есть
в индексах и столбцах сопоставление кодировок пришли в нужный вид.
Наверное можно было бы оставить и так, и больше не возникло бы проблем с кодировками, но мне хотелось сделать как положено, ибо часть таблиц, где не пишутся данные в кодировке так и остались в latin1. Точную цифру я не уточнял, но это порядка 50-70 штук.
Дампером я сделал бэкап БД и сохранил его на компьютере. Далее дамп базы данных открываем Notepad ++ или AkelPad и делаем замену на оставшиеся таблицы в сопоставлении latin1. Для этого открываем функцию поиска и замены, искомая фраза CHARSET=latin1 фраза под замену CHARSET=utf8. Сохраняем изменения и импортируем дамп.
Теперь, если вы зайдете в ПМА, то увидите, что сопоставление кодировки стало везде в utf8
Теперь с чистой совестью можно ставить русификатор, и ваш форум больше не будет выглядеть знаками вопроса ??? а будет иметь вполне себе читабельный вид.
vBulletin 4.2.0 и php 5.4 мы еще подружили не совсем. На этой версии пхп в 4.2.0 не генерируются миниатюры. Поэтому сразу же после выполненных выше действий открываете файл /includes/class_image.php, ищете
Меняете на
Теперь все. Возвращаемся на первые страницы этой темы, и настраиваем свой форум
