xDebug + Denwer + NetBeans

в 5:28, , рубрики: denwer, netbeans, xdebug, Песочница, метки: , ,

В данном хабратопике речь пойдет о том, как настроить xDebug (отладка php) для работы в среде NetBeans c установленным пакетом Denwer. Статья для начинающих, таких же как и я. Решил, что если сам убил пару дней на настройку — может кому-то сэкономит время.
Сразу оговорюсь — вопрос использования пакета Denwer спорный. Возможно лучше использовать, что-то типа wamp или xampp, но мне самому пока нравится Denwer (сам подхватывает виртуальные хосты) и не смотря на то, что проект уже некоторое время не обновляется — еще года 1,5 — 2, думаю проживет.

Итак, обычная последовательность действий по настройке такая:

  1. Качаем правильную версию dll-ки xDebug;
  2. Кладем ее в нужный каталог php;
  3. Вносим нужные настройки в php.ini;
  4. Настраиваем 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:

  1. версия php
  2. версия компилятора Visual C (6/9)
  3. компилировалась ли ваша версия php с параметром Thread Safety = enable или disable
  4. версия платформы, под которую компилировался 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

  1. aneta:

    Спасибо :) Вы сэкономили мне полтора дня!

  2. Dikar:

    Спасибо, кратко и толково.

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js