Ошибка “DB query error” при открытии сайта на Bitrix

Если вы видите такую ошибку при заходе на сайт, значит какая-то беда случилась с CMS Bitrix.

  1. В первую очередь надо включить полное отображение текста ошибки. Для этого заходим на сервер и находим файл dbconn.php. Он находится в папке bitrix/php_interface/
  2. В этом файле изменяем значение параметра DBDebug с false на true.
  3. Пытаемся снова зайти на сайт. Теперь мы получим полный текст ошибки. В моем случае ошибка была такой:
    File: /home/…/bitrix/modules/statistic/classes/mysql/guest.php Line: 23
    MySQL Query Error: SELECT G.ID, G.FAVORITES, U.ID as LAST_USER_ID, A.ID as LAST_ADV_ID, if(to_days(curdate())=to_days(G.LAST_DATE), ‘Y’, ‘N’) LAST FROM b_stat_guest G LEFT JOIN b_stat_adv A ON A.ID = G.LAST_ADV_ID LEFT JOIN b_user U ON U.ID = G.LAST_USER_ID WHERE G.ID=’1865004′
  4.  В первую очередь пытаемся восстановить таблицу со статистикой: заходим на сервер или в phpmyadmin и выполняем команду: REPAIR TABLE b_stat_guest;
  5. В моем случае эта команда не помогла, писалось сообщение:
    Table b_stat_guest is marked as crashed and last (automatic?) repair failed и поэтому ничего не оставалось делать как отключить этот модуль статистики, для этого опять открываем файл dbconn.php и прописываем в нем команду define(‘NO_KEEP_STATISTIC’,true); и после этого мы можем наблюдать как сайт снова оживает.
  6. Если у вас свой, виртуальный, выделенный сервер или он находится в colocation, то тогда вы можете попробовать восстановить поврежденную таблицу, не прибегая к отключению модуля. Для этого есть хорошая инструкция в одном из других блогов.Надеюсь, моя инструкция вам помогла!

Не открывается VK

Как уже обычно на одном из компьютеров кто-то у нас успел поймать зловреда, который либо не пускал на сайты “Вконтакте” и “Одноклассники” или же странным образом спрашивал ввести пароль для доступа к ним ? Так как такой стечение обстоятельств мне уже сильно знакомо, то сразу решил проверить вначале кэш-днс командой ipconfig /flushdns (для первоначальной очистки кэша) и ipconfig /displaydns (для его отображения). В результате вижу вот такую картинку:

Как видите, зловред перенаправлял нас на фишинговую страницу не только популярных российских соц.сетей, но а также некоторых игроков банковского сектора в лице “Сбербанка России”, а также Альфа-Банка (ниже). После такой картины Репина сразу захотелось залезть в уже родную директорию C:Windows\System32\drivers\etc и просмотреть файл hosts, что я и сделал. И как вы думаете, что я обнаружил? Вот эта картина:

И ничего интересного (как вы видите) я не заметил ? Все чисто тут, откуда тогда берутся в кэше-днс неправильные A-записи? Пришлось пойти другим путем и воспользоваться всегда помогающей мне утилитой Марка Руссиновича “Process Monitor”.  Запустил ее, очистил кэш, проверил кэш и начал высматривать события которые успели пройти в системе за  это время. И вот что я увидел:

Как видно, в той же самой директории C:Windows\System32\drivers\etc происходила большая активность совсем с другим файлом. Очень уж странно это показалось, так как его не было видно в системе через проводник никаким образом (даже с включенным условием показа скрытых и системных файлов). Я естественно решил проверить любым способом этот файл и что же мы там увидим? :))

Вот и наши все записи, которые каким-то образом попадали в систему. Ну да ладно, мне не интересно стало выяснять это, просто можно стирать все эти записи, либо удалять сам файл и после этого кэш-днс не забивается неправильными значениями и сайты открываются именно те, которые хочешь. Спасибо, удачи в поисках других зловредов ?

Проверка сайта на доступность

Не знаю как у вас,  а мне часто приходится проверять  доступен ли сайт по 80 порту или нет, когда есть подозрение, что на компьютере глючит браузер или блокирует какая-то программа. Для проверки лучше использовать телнет, который уже не раз помогал нам ?Делаем так, как на картинке ниже и нажимаем Enter.

Если после ввода этой команды виден только черный фон, значит компьютеру удалось подключиться к ya.ru по 80 порту, если же на следующий строке появилась надпись, говорящая о подключении..значит компьютер пытается пробиться через данный сокет, но он похоже закрыт для нас. Сообщение об этом появится там же через несколько секунд.
Теперь, если перед нами окно командной строки без сообщений, то мы должны ввести  команду

GET / HTTP/1.1

Можно это сделать вручную (но тогда вероятность опечатки больше, так как текст который будем писать не будет отображаться) или же просто скопипастить. Это команда говорит серверу, что я хочу получить страницу методом GET по протоколу HTTP версии 1.1 После ввода этой команды нажимаем  опять Enter. Ничего не должно произойти, только курсор перейдет на новую строку. Далее вводим команду

Host: www.ya.ru

указывая тем самым адрес хоста и два раза нажимаем Enter, после чего выведется данный текст:

Это и есть главная страница сайта http://ya.ru , открытая только не браузером как обычно, а телнетом.