Установка 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.

Темы:

Комментарии

Здравствуйте.
Стоит 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's picture

Здравствуйте, попробуйте воспользоваться помощником установки XDebug. Он сообщит, какой бинарь XDebug вам нужен и как его правильно прописать в php.ini.

Спасибо, помогло)
У меня оказалось нужен был другой файл "php_xdebug-2.1.2-5.3-vc9.dll"