Дебаг php-кода на примере диагностики системы авторизации NetCat

Поступила задача: понять, почему CMS NetCat иногда выбрасывает некоторых пользователей интранет-портала. Чтобы выяснить причину (а причина, забегая вперед, оказалась в том, что во внутренней сети у пользователей существует свой собственный DNS-сервер, или, может маршрутизатор, который по-разному прокладывает пути до сервера), нам пришлось научиться мониторить систему авторизации и "следить" за действиями пользователя.

Для этого мы внедрились в файл \netcat\system\essences\nc_user.class.php.

Инициализация дебага собирает базовую информацию о пользователе:

  1. /* МЕГАДЕБАГ: детектим строчку, на которой выкидывает юзеров */
  2. global $DOCUMENT_ROOT;
  3. $phdebug_time = date("Y-m-d H:i:s");
  4. $phdebug_ip = $_SERVER['REMOTE_ADDR'];
  5. $phdebug_req = $_SERVER['REQUEST_URI'];
  6. $phdebug_agent = $_SERVER['HTTP_USER_AGENT'];
  7. $doDebug = false;
  8. if ($phdebug_ip == '192.168.5.42') $doDebug = true; // вписать сюда IP-адрес тестируемого компа
  9. $log_file = $DOCUMENT_ROOT."/_DEBUG_by_Finar/user_logoff_logs.txt";
  10.  
  11. if ($doDebug) {
  12.   file_put_contents($log_file, "$phdebug_time | $phdebug_ip | $phdebug_agent | $phdebug_req | \n", FILE_APPEND | LOCK_EX);
  13.   }
  14. /* // МЕГАДЕБАГ. Далее до конца функции вызываются через строчки с if ($doDebug) */

Далее на каждой значимой сточке ставим ловушки:
if ($doDebug) file_put_contents($log_file, " was on line ". __LINE__ ." \n", FILE_APPEND | LOCK_EX);

Итог: в лог попадают данные о пользователе с заранее известном IP-адресе, а также процесс его "путешествия" по системе авторизации. Успешная авторизация при этом в логах выглядит вот так:

2015-07-21 12:39:13 | 192.168.5.42 | Mozilla/5.0 (Windows NT 6.2; WOW64; rv:39.0) Gecko/20100101 Firefox/39.0 | /news/load/ | 
  was on line 268 
  was on line 309 
  was on line 322 
  was on line 350 
  was on line 352 
  GOT AUTH_USER_ID on line 354 

Не успешная - сообщит от номере сроки php-файла, до которой добрался пользователь.

Блог

Что с Мастерхостом? Когда заработает?!

Этот вопрос всё чаще задают в Интернете начиная примерно с 12:00 дня 2 марта. А всё потому, что он накрылся!

далее

Автоматизированная Система Управления Бэкапами

Автоматизированная Система Управления Бэкапами позволяет добиться полного контроля над резервными копиями сайтов внутри инфраструктуры веб-студии. Если вы поддерживаете десятки сайтов на разных хостингах, без подобной системы вы не можете быть на 100% уверены в том, что каждый из них был корректно зарезервирован прошлой ночью.

далее

WebSocket: интеграция с NetCat

Хотите добавить на сайт под управлением CMS NetCat поддержку технологии WebSocket? Обращайтесь к нам! Посетители сайта смогут получать мгновенные уведомления о событиях сайта без обращений к серверу и перезагрузок страниц. Превратите свой сайт в интерактивную площадку, работающую в реальном времени!

далее

NetCat: техническая поддержка и доработка сайтов

Мы работаем с CMS NetCat уже больше 10 лет. У нас большой опыт и ответственный подход к делу.

далее

Весь блог тут