Установка XDebug
Когда PHP и Apache установлены и работают, а phpinfo() выдаёт страницу с информацией о PHP, можно приступать к установке и конфигурации отладчика XDebug.
Для начала пара слов о самом XDebug.
Зачем нужен XDebug?
При разработке приложений на PHP, особенно когда приходится писать свою систему, а не пользоваться готовой СMS, часто возникает необходимость находить всевозможные проблемы в программе. Многие ошибки в программе ускользают даже от взгляда опытного разработчика, так что просто глядя на программу можно найти далеко не все ошибки. А когда сталкиваешься с необъяснимым поведением системы, можно потратить многие часы на поиск ошибки, не имея возможности "изнутри" взглянуть на работающую программу. Приходится захламлять код всевозможными вызовами print_r и echo, чтобы понять, что же там внутри программы происходит.
Именно заглянуть внутрь работающей программы, посмотреть переменные, переданные от клиента параметры и многое другое, нам позволяет отладчик.
Очень удивительно, но многие разработчики (даже, по их мнению, весьма опытные) удивляются, когда узнают о возможности пошаговой отладки программ на PHP. Я же предлагаю сразу установить и сконфигурировать отладчик, чтобы в дальнейшем, при возникновении проблем, сразу же воспользоваться этим инструментом, не тратя времени на поиск ошибок методом "научного тыка".
Приступаем к установке
Xdebug является модулем, подключаемым к PHP. Для начала надо определить, какая версия этого модуля нужна именно вам, ибо версий этих на сайте XDebug немало.
Для Windows и Apache нужна версия PHP X.X VC6 TS (NN bit), где X.X - ваша версия PHP, а NN - разрядность операционной системы (32 или 64). Аккуратно найдите в списке вариантов то, что вам надо, и скачивайте, желательно самую свежую версию.
Скачав модуль XDebug, можно положить его в директорию с остальными модулями PHP. После этого надо дописать в php.ini конфигурацию, указав полный путь к модулю XDebug на вашей машине:
[xdebug] xdebug.collect_params=3 xdebug.remote_enable=1 xdebug.remote_handler=dbgp xdebug.remote_mode=req xdebug.remote_host=localhost xdebug.remote_port=9000 zend_extension_ts="с:\soft\php\ext\php_xdebug-2.1.1-5.2-vc6.dll"
Обратите внимание, в зависимости от версии PHP может понадобиться вместо zend_extension_ts указывать zend_extension. Чтобы выбрать правильный вариант, можно воспользоваться помощником установки XDebug (см. ниже).
В приведённом примере XDebug сконфигурирован так, что будет при начале отладочной сессии устанавливать связь с клиентом-отладчиком по TCP localhost:9000. Параметр xdebug.collect_params=3 даёт инструкцию XDebug при выводе стека вызовов отображать значения параметров функций и методов, что даёт дополнительную информацию к размышлению при поиске ошибок.
Полный список поддерживаемых параметров и разъяснение, что для чего нужно - на странице параметров конфигурации XDebug.
Если XDebug сконфигурирован правильно, он будет выводить информацию о себе в phpinfo():
Ниже в содержимом phpinfo() будут выведены все параметры конфигурации XDebug:
Теперь, чтобы приступить непосредственно к пошаговой отладке, можно запустить отладчик-клиент, которым может быть, например, среда разработки NetBeans или Eclipse. Через связь, установленная между XDebug и средой разработки, будет идти обмен всеми жизненно важными данными, такими, как значения переменных, точки останова, стеки вызова и так далее.
Помощник по установке XDebug
На сайте XDebug есть удобный инструмент, который помогает выбрать подходящий модуль XDebug для скачивания и установки, а также показывает, как этот модуль надо подключить к PHP.
Этот инструмент находится на странице http://xdebug.org/wizard.php.
Чтобы получить подсказку по установке XDebug, надо в поле ввода скопировать весь вывод страницы phpinfo(): берём весь текст phpinfo(), нажимая Ctrl-A, Ctrl-C, и вставляем его в поле помощника XDebug - Ctrl-V. Нужен не исходный код HTML страницы phpinfo(), а именно текстовое содержимое.
Далее нажимаем кнопку "Analyse my phpinfo() output" помощника. Тут же ваша конфигурация PHP будет проанализирована и вы получите ссылку на подходящий вам модуль XDebug, а также указание, какие дирекивы дописать в php.ini.
Комментарии
yura
Пн, 05/12/2011 - 15:12
Ссылка
Здравствуйте.
Здравствуйте.
Стоит Apache 2.2 и PHP 5.3.8. Прописал в php.ini, как у вас в статье, но в phpinfo() появляется только логотип:
This program makes use of the Zend Scripting Language Engine:
Zend Engine v2.3.0, Copyright (c) 1998-2011 Zend Technologies
Не подскажите, на что еще нужно обратить внимание, чтобы XDebug подключить?
labaka
Пн, 05/12/2011 - 21:09
Ссылка
Здравствуйте, попробуйте
Здравствуйте, попробуйте воспользоваться помощником установки XDebug. Он сообщит, какой бинарь XDebug вам нужен и как его правильно прописать в php.ini.
yura
Вт, 06/12/2011 - 09:49
Ссылка
Спасибо, помогло)
Спасибо, помогло)
У меня оказалось нужен был другой файл "php_xdebug-2.1.2-5.3-vc9.dll"
Иван (гость)
Ср, 18/07/2012 - 11:57
Ссылка
Спасибо за статью.
Илона (гость)
Пн, 06/08/2012 - 18:00
Ссылка
статья очень помогла. спасибо
qwenchi (гость)
Вт, 12/03/2013 - 18:49
Ссылка
Spasibo za statiu