[Решено] IP.Board не удалось прочитать настройки системы из базы данных. Система не может продолжить работу пока причина ошибки не будет устранена.

Опубликовано в Веб-разработка

Решаем проблему с БД в IP.Board, появившейся после переноса сайта на другой сервер.

Собственно, решение было найдено на этом форуме, но поскольку ничто не вечно, я решил забрать себе это в копилку.

Решение №1

1) Откройте через phpMyAdmin таблицу {префикс}cache_store, найдите поле "settings" и вставьте туда значение:

a:2:{s:10:"mail_queue";i:0;s:13:"task_next_run";s:10:"1246017960";}

или выполните sql запрос

UPDATE {префикс}cache_store SET cs_value='a:2:{s:10:"mail_queue";i:0;s:13:"task_next_run";s:10:"1246017960";}' WHERE cs_key = 'settings';

где {префикс} - префикс таблиц базы данных.

2) Все запустится, обязательно сразу пройдите в АЦ и перестройте все кеши.

Тот факт, что появилась данная ошибка, означает, что при переносе не была учтена кодировка БД, и на новом месте БД уже не UTF-8. Так же IPS настоятельно рекоммендует при переносе, копировании, обновлени - всегда ставить форум в режим "Оффлайн".

Решение №2

Fix cache crash for developers (фикс битого кэша для продвинутых пользователей). Сброс всех кэшей системы.

1) Выполнить запросы

UPDATE ibf_cache_store SET cs_value='a:0:{}' WHERE cs_array=1 AND cs_key != 'settings';
UPDATE ibf_cache_store SET cs_value='a:2:{s:10:"mail_queue";i:0;s:13:"task_next_run";s:10:"1246017960";}' WHERE cs_key = 'settings';

2) Открыть /admin/applications/core/modules_admin/applications/applications.php

Найти

$apps[ $row['app_directory'] ]['hasCustomHeader'] = ( method_exists( $this->registry->output->getTemplate( $row['app_directory'] . '_global' ), 'overwriteHeader' ) ) ? 1 : 0;

Заменить на

$apps[ $row['app_directory'] ]['hasCustomHeader'] = ( $this->registry->isClassLoaded('output') && method_exists( $this->registry->output->getTemplate( $row['app_directory'] . '_global' ), 'overwriteHeader' ) ) ? 1 : 0;

Если версия < 3.4, подправить /admin/sources/classes/output/publicOutput.php

Найти

"cache_set_id=" . $skinSetID

Заменить на

"cache_set_id=" . intval( $skinSetID )

3) Зайти в админцентр.

Перестроить все кэши.

Tags: IP.Board