PDA

Просмотр полной версии : [F.A.Q] Частые ошибки



Osetin
12.12.2013, 15:27
1. Table 'имя_таблицы' doesn't exist [1146]
Причины: отсутствие таблицы в БД (наиболее часто вследствие невыполнения в полном объёме инструкции по установке МОДов, секции SQL или DIY)
Также ошибка может появляться, если не внесены правки в constants.php:

define('ИМЯ_МОДА_TABLE', $table_prefix . 'name_mod');
И PHP вместо имени таблицы phpbb_name_mod подставляет в запрос имя самой константы ИМЯ_МОДА_TABLE (так как значение её не определено в файле constants.php). Проверяем установку.
Или же из-за самого мода, который напрямую обращается к своей таблице без учёта префикса, при условии, что префикс таблиц форума не phpbb_. В этом случае обращаемся в тему поддержки мода.

2. MySQL server has gone away
Причина: не работает сервер с базой данных
Решение: связаться с хостером и спросить о причинах

3. Table 'имя_таблицы' is marked as crashed and should be repaired
Причина: повреждена указанная таблица в базе данных

4. Parse error: syntax error, unexpected T_ELSE ... или Parse error: syntax error, expected или Parse error: syntax error, unexpected '}' in ......includes/template.php(230) : eval()'d code on line .....
Причина: синтаксическая ошибка в коде (вследствие неправильно произведённого редактирования кода) скрипта php. Чаще всего возникает вследствие некорректного редактирования шаблона html при установке мода или обновления версии phpbb3.
Решение: правильно установить мод/провести обновление, проверить парность "условных комментариев" <!-- IF --><!-- ELSE --><!-- ENDIF --> или <!-- BEGIN --><!-- BEGINELSE --><!-- END -->, проверить правильность последних действий в указанном файле. При невозможности самостоятельного исправления - откатить файл из бэкапа к состоянию до внесения правок.[FAQ] Что такое МОДы и как установить МОД

5. Module not accessible
Причина: модуль отключен или удален, либо ошибка правки файлов модулей личного раздела или админки.
Решение: прочтите тему Общая ошибка Module not accessible
Последний раз редактировалось Sheer 02.10.2013 13:20, всего редактировалось 3 раз(а).
Причина: Дополнение ответа на вопрос 4


6.
PHP Notice: in file [ROOT]/viewtopic.php on line 33: Undefined variable: some_var
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 4668: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3815)

Сообщение Cannot modify header information - headers already sent не является сообщением об ошибке, а говорит о том, что заголовок, отдаваемый браузеру, уже послан функцией page_header() в строке 3815

[PHP]header('Content-type: text/html; charset=UTF-8');

еще до того, как скрипт пытается послать его в функции msg_handler() в строке 4668

echo '<b>[phpBB Debug] ' . $error_name . '</b>: in file <b>' . $errfile . '</b> on line <b>' . $errline . '</b>: <b>' . $msg_text . '</b><br />' . "\n";

То есть, это сообщение следует интерпретировать следущим образом "Не могу послать заголовок в строке 4668, потому что он уже отправлен ранее в строке 3815 файла includes/functions.php
Причина появления этого сообщения описана в строке выше

[phpBB Debug] PHP Notice: in file [ROOT]/viewtopic.php on line 33: Undefined variable: some_var
то есть, не определена переменная some_var в файле viewtopic.php в строке 33. Ошибку надо искать там, а не в includes/functions.php
Вариант

[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 4668: Cannot modify header information - headers already sent by (output started at [ROOT]/viewtopic.php:1)
"Не могу послать заголовок в строке 4668, потому что он уже отправлен ранее в строке 1 файла viewtopic.php
Ищите ошибку в viewtopic.php. Скорее всего перед открывающими символами php-скрипта <?php попали какие-то лишние символы, например пробел или метка BOM

Такие сообщения появляются потому, что интерпретатор РНР посылает заголовки автоматически, как только скрипт начинает выдавать браузеру информацию. Соответственно, если хоть один пробел был уже передан, то заголовки уже ушли, и снова их послать уже никак не можно. А функции, такие как, header(), setcookie, session_start(), посылают HTTP заголовки.