В данном хабратопике речь пойдет о том, как настроить xDebug (отладка php) для работы в среде NetBeans c установленным пакетом Denwer. Статья для начинающих, таких же как и я. Решил, что если сам убил пару дней на настройку — может кому-то сэкономит время.
Сразу оговорюсь — вопрос использования пакета Denwer спорный. Возможно лучше использовать, что-то типа wamp или xampp, но мне самому пока нравится Denwer (сам подхватывает виртуальные хосты) и не смотря на то, что проект уже некоторое время не обновляется — еще года 1,5 — 2, думаю проживет.
Итак, обычная последовательность действий по настройке такая:
- Качаем правильную версию dll-ки xDebug;
- Кладем ее в нужный каталог php;
- Вносим нужные настройки в php.ini;
- Настраиваем NetBeans;
Качаем правильную версию dll-ки xDebug
Библиотеку надо скачать с сайта xdebug.org. Проблема состоит в выборе нужной версии dll-ки.
Вот, например, список бинарников версии 2.2.0 для Windows:
- PHP 5.2 VC9 (32 bit)
- PHP 5.2 VC9 TS (32 bit)
- PHP 5.3 VC9 (64 bit)
- PHP 5.3 VC9 (32 bit)
- PHP 5.3 VC9 TS (64 bit)
- PHP 5.3 VC9 TS (32 bit)
- PHP 5.4 VC9 (64 bit)
- PHP 5.4 VC9 (32 bit)
- PHP 5.4 VC9 TS (64 bit)
- PHP 5.4 VC9 TS (32 bit)
Обычно, чтобы определить нужную версию достаточно на в Denwer-е на одном из виртуальных хостов сделать php-файл с вызовом функции phpinfo(). Например, index.php
<?php
phpinfo();
?>
Открыть данную страницу в браузере, нажать «просмотреть исходный код страницы», скопировать все в буфер обмена, вставить все это в xdebug.org/wizard.php и помощник xDebug сам подскажет нужную библиотеку. Но в пакет Denwer входит php версии 5.3.3, скомпилированный Visual C 6-ой версии, которая больше не поддерживается xDebug — о чем и сообщает помощник, отказываясь подсказывать нужную версию dll-ки.
Возникает выбор из 2-х вариантов:
- обновить php (возможно лучший вариант)
- самим разобраться
Разберем второй вариант. Выбор версии xDebug зависит от следующих параметров php:
- версия php
- версия компилятора Visual C (6/9)
- компилировалась ли ваша версия php с параметром Thread Safety = enable или disable
- версия платформы, под которую компилировался php (32/64 бит)
Всю эту информацию можно самостоятельно получить из вывода функции phpinfo(). Итак, у меня последняя сборка Denwer с php версии 5.3.3, VC6, TS, 32 бит. Последняя версия xDebug, подходящая мне — это 2.1.2 (PHP 5.3 VC6 TS (32 bit)). dll-файл — php_xdebug-2.1.2-5.3-vc6.dll
Кладем ее в нужный каталог php
Библиотеку нужно поместить в подкаталог ext, каталога с php. При стандартной установке это: c:WebServersusrlocalphp5ext
Вносим нужные настройки в php.ini
В конец файла php.ini, который при утсановке Denwer-а по умолчанию находится в c:WebServersusrlocalphp5, необходимо внести следующие строки:
zend_extension = c:WebServersusrlocalphp5extphp_xdebug-2.1.2-5.3-vc6.dll
xdebug.remote_enable = on
xdebug.remote_handler = dbgp
xdebug.remote_host = localhost
xdebug.remote_port = 9000
По поводу пары параметров хотелось бы прокомментировать:
zend_extension — путь до вашей библиотеки xDebug может быть как через реальный диск (у меня С:), так и через виртуальный, например Z:. Так же для версии php данный параметр нужно называть zend_extension_ts.
xdebug.remote_port — порт на котором будет висеть отладчик. Он, понятное дело, не должен быть занят. Если занят — можно выбрать любой свободный.
В данный момент xDebug уже должен подключиться к php — это можно увидеть через phpinfo(), там в конце первой таблицы появится блок примерно с таким тестом: «Zend Engine v2.3.0, Copyright © 1998-2010 Zend Technologies
with Xdebug v2.1.2, Copyright © 2002-2011, by Derick Rethans»
Настраиваем NetBeans
В NetBeans, в меню Сервис / Параметры / PHP необходимо указать путь к интерпретатору php — у меня c:WebServersusrlocalphp5php.exe. Ну и последнее — на закладке «Отладка» указать порт отладчика, прописанный нами ранее в php.ini. У меня — 9000, соответственно.
Все можно ставить точки останова и наслаждаться настроенной системой.
Автор: zag2art
Спасибо :) Вы сэкономили мне полтора дня!
Спасибо, кратко и толково.