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

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

« предыдущая - следующая »

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


digger®

12 апреля 2010, 02:30:47 #1 Последнее редактирование: 26 июня 2013, 18:45:07 от digger®
После переноса форума не открываются или испорчены вложения

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

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

digger®

12 апреля 2010, 02:32:19 #2 Последнее редактирование: 15 марта 2011, 18:20:26 от digger
Ошибка
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

перед
Код: (php)

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

добавить

для SMF1
Код: (php)

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


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

digger®

05 января 2011, 20:44:46 #3 Последнее редактирование: 26 июня 2013, 18:45:42 от digger®
У всех пользователей одинаковый IP адрес

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


digger®

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

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

digger®

18 ноября 2011, 01:35:41 #6 Последнее редактирование: 26 июня 2013, 18:48:35 от digger®
Файл 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®

03 августа 2012, 01:37:18 #8 Последнее редактирование: 26 июня 2013, 18:53:18 от digger®
После перекодировки форума половина символов отображается вот так:
Р' СЌС,РѕРј разделе можно весС,Рё разговоры РЅР° любые С,емы.
А остальные вот таким образом: ��������������������������
Как это можно поправить?

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

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


2) В Settings.php добавить строку
Код: (php)
$db_character_set = 'utf8';


3) Выполнить запрос к бд для UTF8 кодировки:
Код: (sql)
INSERT INTO smf_settings (variable, value) VALUES ('global_character_set', 'UTF-8')

где smf_ префикс таблицы бд, поменять на свой если отличается.
В запросе писать 'UTF-8' обязательно заглавными! Это важно!

digger®

23 октября 2012, 19:11:05 #9 Последнее редактирование: 06 октября 2015, 15:01:55 от digger®
При цитировании или быстром редактировании ничего не происходит, а в логах выдает ошибку:

Код
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®

07 сентября 2013, 12:07:31 #11 Последнее редактирование: 11 октября 2015, 14:20:03 от digger®
Сортировка разделов не совпадает с порядком заданным в админке.

Если у таблицы smf_boards тип InnoDB следует выполнить такой запрос в phpMyAdmin:
Код: (sql)
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®

19 февраля 2014, 23:07:48 #12 Последнее редактирование: 19 февраля 2014, 23:55:42 от digger®
После обновления php на версию 5.4 и выше множественные проблемы с форумом в кодировке win-1251.

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


digger®

Не отправляется почта с форума через внешний smtp сервер с шифрованием (порт 465)

Нужно указывать настройки так
Код
Сервер SMTP ssl://адрес_сервера_smtp
Порт SMTP 465

digger®

06 июля 2016, 02:05:54 #15 Последнее редактирование: 24 июля 2016, 03:59:49 от digger®
Форум не работает после обновления PHP до версии 7.0 и выше.

При этом, в логах сервера ошибки подобные
Код: (php)
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, то причина в нем. Удаление мода решит проблему.