cooper |
Отправлено: 15 февраля 2015 — 08:51
|
Junior Member
Покинул форум
Сообщений всего: 66
Дата рег-ции: Авг. 2011
Репутация: 1
|
electron пишет:перенос форума должен выполняться в бинарном режиме. если это условие не выполнялось на форуме будут постоянные косяки.
С этим просто - FTP Voyager tools\transfer mode\binary
electron пишет:после переезда нужно высставить права на запись для файлов и папок из ExBB FAQ , вопрос/ответ 3
Там к примеру сказано:"для папки data и всех файлов в ней"
В папке data есть вложенная папка access_log, нужно ли изменять в ней?
Тут таки да, если долго пользуешься форумом как потребитель, то после этого любые сбои в работе вызывают трудности.
С другой стороны, это говорит в пользу форума, - пару лет работал как часы.(Отредактировано автором: 15 февраля 2015 — 08:52) |
|
|
cooper |
Отправлено: 15 февраля 2015 — 20:56
|
Junior Member
Покинул форум
Сообщений всего: 66
Дата рег-ции: Авг. 2011
Репутация: 1
|
electron пишет:
сам сервер должен работать в кодировке win-1251 . если в админке хостинга нельзя выбрать кодировку сервера - заставьте его принудительно обрабатывать работу форума в нужной ВАМ кодировке. для этого в корневой .htaccess форума надо добавить строку
CODE:AddDefaultCharset windows-1251
Сервер хостера работает в UTF-8, поэтому практически сразу:
В настройках домена прописал windows-1251
Строчку с кодировкой в .htaccess форума прописал.
При сбое кодировки хотя бы кракозябалы должны были бы писаться, а тут - ничего.
Пишет везде - "не заполнили поле"
Или в админке, просто не сохраняет записи на кириллице.(Отредактировано автором: 15 февраля 2015 — 20:59) |
|
|
cooper |
Отправлено: 16 февраля 2015 — 13:00
|
Junior Member
Покинул форум
Сообщений всего: 66
Дата рег-ции: Авг. 2011
Репутация: 1
|
Цитата:Затем нужно решить проблему с функцией htmlspecialchars в которой нужно обязательно прописать кодировку cp1251 или будут проблемы с кириллицей.
Можно конечно жестко прописать, но вдруг когда поменять придется...
Короче открываем common.php ищем строку
CODE:define('FM_PATH', dirname(dirname(__FILE__)) . '/');
после которой добавляем
CODE:define("FM_ENCODING", "cp1251");
И в папке install в файлах index.php и update.php аналогично в начало добавляем
CODE:define("FM_ENCODING", "cp1251");
После этого делаем поиск по всем файлам форума строки htmlspecialchars и если у функции задано не все три параметра приводим функцию к полному виду, например
CODE:htmlspecialchars($v,ENT_QUOTES,FM_ENCODING)
(на месте первого параметра должно остаться то, что там было)
И не включаем модули "Хранение статистики чтения тем на сервере" и "Поиск тем и сообщений пользователя" т.к. они используют базу на SQLite2 а её поддержка с этой версии PHP была прекращена.
У меня файл common имеет вид:
CODE:<?php
if (!defined('IN_EXBB')) die('Hack attempt!');
error_reporting (E_ALL);
#error_reporting (E_ERROR | E_PARSE);
if (!defined("PATH_SEPARATOR")) { define("PATH_SEPARATOR", getenv("COMSPEC")? ";" : ":"); }
ini_set("include_path", ini_get("include_path").PATH_SEPARATOR.dirname(__FILE__));
if (get_magic_quotes_runtime() === 1) set_magic_quotes_runtime(0);
define("FM_LOGDIR", "data/access_log/");
define("FM_ALLFORUMS", "data/allforums.php");
define("FM_ALLFORUMS_BAK", "data/allforums_bak.php");
define("FM_BADWORDS", "data/badwords.php");
define("FM_BANLIST", "data/banlist.php");
define("FM_BANNEDIP", "data/bannedip.php");
define("FM_BANNERS", "data/banners.php");
define("FM_BOARDINFO", "data/boardinfo.php");
define("FM_BOARDINFO_BAK", "data/boardinfo_bak.php");
define("FM_BOARDSTATS", "data/boardstats.php");
define("FM_COUNTERS", "data/counters.php");
define("FM_TITLES", "data/membertitles.php");
define("FM_NEWS", "data/news.php");
define("FM_ONLINE", "data/onlinedata.php");
define("FM_SKIP_MAILS", "data/skip_mails.php");
define("FM_SMILES", "data/smiles.php");
define("FM_USERS", "data/users.php");
define("FM_TEMPUSERS", "data/users_temp.php");
define("FM_SEARCH_EXC", "data/search_exc.php");
define("FM_VERSION", "1.0 RC1");
require_once('lib.php');
require_once('page_header.php');
$fm->_Advertising();
$fm->_Authorization();
// Если сервер в заголовках принудительно ставит левую кодировку, пошлём его подальше и поставим свою ;)
header('Content-Type: text/html; charset='.$fm->LANG['ENCODING']);
$fm->exbb['version'] = FM_VERSION;
// На домене установки форум будет доступен только по тому URL, который указан в админке
// Это предотвращает проблемы с работой сессий и куки на производных поддоменах типа 'www' и т п.
preg_match("#(www\.|)([[:alnum:]\.\-]+)/([[:alnum:]\/\.\-]+)#is", $_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'], $req_url);
preg_match("#(www\.|)([[:alnum:]\.\-]+)/([[:alnum:]\/\-]+)#is", $fm->exbb['boardurl'], $set_url);
if (@$req_url[2] == @$set_url[2] && $req_url[1] != $set_url[1])
header('Location: http://'.$set_url[2].'/'.$req_url[3].(($_SERVER['QUERY_STRING'] ? '?'.$_SERVER['QUERY_STRING'] : '')));
unset($req_url, $set_url);
if ($fm->exbb['installed'] === FALSE) {
header("Location: ./install/index.php");
} elseif (file_exists("./install/index.php")) {
$fm->_Message($fm->LANG['MainMsg'],$fm->LANG['DelleteInstallDir']);
}
if ($fm->exbb['board_closed'] && !(defined('IS_LOGIN') || defined('IS_ADMIN'))) {
$fm->_Message($fm->LANG['BoardClosed'],nl2br(strtr($fm->exbb['closed_mes'], array_flip(get_html_translation_table(HTML_SPECIALCHARS)))));
}
?>
(Отредактировано автором: 16 февраля 2015 — 13:04) |
|
|
cooper |
Отправлено: 16 февраля 2015 — 21:32
|
Junior Member
Покинул форум
Сообщений всего: 66
Дата рег-ции: Авг. 2011
Репутация: 1
|
NordWest, - в common прописал, не помогло.
Из всех подчеркнутых файлов, у меня есть только:
fm.class.рнр
JsHttpRequest.рнр
Но в них нет функции: htmlspecialchars
Ну или устал уже.
-
"Танцы с бубнами".....................
Запустил Денвер-3 РНР5
Залил туда весь форум из бэкапа - все работает как часы.
Проблема в кодировке!
Пока лазил по JsHttpRequest.рнр - обнаружил там интересные строки:
CODE:
* Convert a PHP scalar, array or hash to JS scalar/array/hash. This function is
* an analog of json_encode(), but it can work with a non-UTF8 input and does not
* analyze the passed data. Output format must be fully JSON compatible.
CODE:if (function_exists('array_walk_recursive') && function_exists('json_encode') && $this->_unicodeConvMethod) {
$encoding = "UTF-8";
$this->_nonAsciiChars = join("", array_map('chr', range(128, 255)));
$this->_toUtfFailed = false;
array_walk_recursive($result, array(&$this, '_toUtf8_callback'), $this->SCRIPT_ENCODING);
if (!$this->_toUtfFailed)
Вообще-то я рнр знал только немножко, да и то вчера. Но судя по всему там запрет на работу с utf-8. |
|
|
cooper |
Отправлено: 17 февраля 2015 — 08:02
|
Junior Member
Покинул форум
Сообщений всего: 66
Дата рег-ции: Авг. 2011
Репутация: 1
|
Ситуация такая, - тут постоянно говорилось, что форум работает только на серверах с windows-1251.
Ппрописать в .htaccess эту строку:
CODE:AddDefaultCharset windows-1251
- ничего не решает.
Эта строка регламентирует сервер передавать браузеру инфу в этой кодировке, и то, если не будет другой команды. На то, что передает браузер на сервер, это не распространяется.
Есть еще две директивы:
CODE:CharsetSourceEnc windows-1251
- Загрузка файлов только в windows-1251
- Запрет перекодировать файлы.
Обе эти директивы вызывают у меня на хостинге - ошибку 500.
.htaccess ограничено в своей работе директивами заданными в httpd.conf(Отредактировано автором: 17 февраля 2015 — 08:06) |
|
|
|