[FAQ] Ошибки, проблемы, решения

Автор digger®, 15 декабря 2009, 20:51:35

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.


digger®

#1
После переноса форума не открываются или испорчены вложения

Возможно, бьются файлы при копировании по ftp, если в ftp-клиенте стоит тип передачи файлов - "авто", а клиент не смог правильно определить тип. Для копирования файлов вложений и картинок следует использовать "двоичный" ("бинарный") тип передачи.

Можно запаковать все в архив и перенести его, чтобы избежать проблем связанных с передачей отдельных файлов.

digger®

#2
Ошибка
The SELECT would examine more than MAX_JOIN_SIZE rows; check your WHERE and use SET SQL_BIG_SELECTS=1 or SET SQL_MAX_JOIN_SIZE=# if the SELECT is okay


В файле load.php

перед

// Try to load it from the cache first; it'll never get cached if the setting is off.

добавить

для SMF1

db_query("SET SQL_BIG_SELECTS=1", __FILE__, __LINE__);


для SMF2
$request = $smcFunc['db_query']('', 'SET SQL_BIG_SELECTS=1',array());

digger®

#3
У всех пользователей одинаковый IP адрес

При реализации балансировки веб серверов с использованием реверсного прокси (это может быть Nginx, Apache с mod_proxy, Pound или что-то еще) в логах форума все пользователи будут иметь иметь одинаковый IP адрес (внешний адрес реверсного прокси).
Чтобы избавится от этого, нужно установить и настроить для Apache модуль mod_rpaf. Он способен в принятых запросах подменять заголовки, а именно подменять адрес прокси на адрес переданный в заголовке X-Forwarded-For.
Если у вас не выделенный сервер, а хостинг, обращайтесь с этим вопросом к своему хостеру.


digger®

При удалении сообщений ошибка: "Не выбран действующий раздел для удаления темы"

Админка - Разделы форума - Настройки
включена опция "Разрешить восстановление удаленных тем", но не выбран раздел куда будут переносится сообщения/темы при удалении.
Или отключите опцию или создайте требующийся раздел.

digger®

#6
Файл Settings.php вдруг стал пустым или битым. На форуме ошибки типа

ЦитироватьNotice: Undefined variable: sourcedir in /home/.../index.php on line 54
Warning: require_once(/QueryString.php) [function.require-once]: failed to open stream: No such file or directory in /home/.../index.php on line 54
Fatal error: require_once() [function.require]: Failed opening required '/QueryString.php' (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/.../index.php on line 54

Самая частая причина повреждения файла Settings.php - отсутствие свободного места на диске.
Решите проблему со свободным местом и восстановите файл. Можно переименовать Settings_bak.php в Settings.php и проверить, что все данные в нем указаны правильно или взять чистый Settings.php из дистрибутива SMF и заполнить своими данными.

digger®

Если добавить вопрос для проверки перед созданием темы/ответа, то несмотря на то, что говорится что проверка будет регистро-независимой, на самом деле это оказывается не так.
Т.е. правильный ответ переводится в маленький регистр и ответ принимается тоже только в таком же!


Установите мод Fix case-sensitive verification answers

digger®

После перекодировки форума половина символов отображается вот так:
Р' СЌС,РѕРј разделе можно весС,Рё разговоры РЅР° любые С,емы.
А остальные вот таким образом: ��������������������������

Пользователи с русскими логинами/паролями не могут войти на форум.

Как это можно поправить?

После перекодировки нужно:

1) Установить локализацию Russian-utf8 и переключить форум на нее
Админка - Настройка языков - Добавить язык - Russian - Поиск - SMF russian-utf8 - Установить
Админка - Настройка языков - Язык форума по умолчанию - Russian-utf8


2) В Settings.php добавить строку
$db_character_set = 'utf8';
3) Выполнить запросы к бд для UTF8 кодировки:
где smf_ префикс таблицы бд, поменять на свой если отличается.
В запросе писать 'UTF-8' обязательно заглавными! Это важно!
INSERT INTO smf_settings (variable, value) VALUES ('global_character_set', 'UTF-8')
INSERT INTO smf_settings (variable, value) VALUES ('previousCharacterSet', 'CP1251')

При первой попытке входа пользователя с русским логином/паролем выдаст сообщение о неверном пароле, при второй попытке, обновит хэш пароля в базе и успешно залогинит пользователя.

digger®

#9
При цитировании или быстром редактировании ничего не происходит, а в логах выдает ошибку:

http://site.ru/index.php?action=quotefast;quote=14181;xml;pb=message;mode=1
2: preg_replace() [<a href='function.preg-replace'>function.preg-replace</a>]: Compilation failed: disallowed Unicode code point (>= 0xd800 && <= 0xdfff) at offset 34

Как исправить:

В файле Sources/QueryString.php

Найти:
return preg_replace('~[\x00-\x08\x0B\x0C\x0E-\x19' . ($context['utf8'] ? ([at]version_compare(PHP_VERSION, '4.3.3') != -1 ? '\x{D800}-\x{DFFF}\x{FFFE}\x{FFFF}' : "\xED\xA0\x80-\xED\xBF\xBF\xEF\xBF\xBE\xEF\xBF\xBF") : '') . ']~' . ($context['utf8'] ? 'u' : ''), '', $string)
Заменить на:
return preg_replace('~[\x00-\x08\x0B\x0C\x0E-\x19' . ($context['utf8'] ? '\x{FFFE}\x{FFFF}' : '') . ']~' . ($context['utf8'] ? 'u' : ''), '', $string);
Символы с D800 по DFFF стали недопустимыми в UTF-8 в последних версиях php.

[Исправлено в SMF 2.0.3 и старше]

Если цитирование не работает и нет упомянутых ошибок в логе, тогда в каком-то из файлов форума имеется сигнатура UTF-8 BOM. Есть скрипт для поиска таких файлов.


digger®

#11
Сортировка разделов не совпадает с порядком заданным в админке.

Если у таблицы smf_boards тип InnoDB следует выполнить такой запрос в phpMyAdmin:
ALTER TABLE `smf_boards` ADD UNIQUE KEY (`id_board`), DROP PRIMARY KEY, ADD PRIMARY KEY ( `board_order`, `id_board` ), ENGINE=InnoDB;
Мод для исправления MySQL Board Order Fix

[Исправлено в SMF 2.0.8]

digger®

#12
После обновления php на версию 5.4 и выше множественные проблемы с форумом в кодировке win-1251.

Не utf-8 версии форума больше не поддерживаются и не будут нормально работать на php 5.4 и выше.
Или откатывать php на 5.3 или конвертировать форум в utf-8.



digger®

#15
Форум не работает после обновления PHP до версии 7.0 и выше.

При этом, в логах сервера ошибки подобные
PHP Fatal error:  Uncaught Error: Call to undefined function mysql_connect()
В PHP начиная с версии 7.0 не поддерживается расширение mysql используемое форумом для работы с БД. В качестве решения или понижение версии PHP или установка мода MySQLi добавляющего поддержку расширения mysqli работающего с PHP 7.0. Если невозможно установить мод из-за неработоспособности форума, можно просто распаковать все php файлы из архива с модом в папку Sources форума и заменить в Settings.php строку

$db_type = 'mysql';на
$db_type = 'mysqli';

digger®

Перестало работать автодополнение имен пользователей в полях ввода, таких как адресат личного сообщения.

Если установлен мод Personalized BBC, то причина в нем. Удаление мода решит проблему.