Как правильно установить xdebug для удобной работы

1. Скачиваем расширение — http://www.xdebug.org/download.php (я качаю ts) и копируем в папку с расширениями php.
2. В php.ini пишем

После перезапуска апача phpinfo будет содержать раздел xdebug.

3. Качаем плагин для firefox — Xdebug Helper с неофициального сайта — http://www.softpedia.com/progDownload/Xdebug-Helper-Download-79882.html, к сожалению, на официальном сайте его уже нет, там он называется EasyXdebug и не работает (https://addons.mozilla.org/nl/firefox/addon/58688).
Он для нового firefox не подходит — надо поправить версию. Залазим в скачанный архив (можно временно переименовать в zip, к примеру), редактируем файл install.rdf — ставим параметр maxVersion=»5.0″. Сохраняем в архив, переименовываем его обратно (меняем расширение). Потом он ставится без проблем. Прописываем в настройках плагина тот же ключ, что и в php.ini.
4. После этого в среде разработки настраиваем всё в соответствии с настройками php и плагина. Я лично пользуюсь phpStorm, в нём надо ткнуть в кнопку Select Debug configuration, создать новую конфигурацию, создать в конфигурации новыйServer, у которого в Web server root URL пишем url к корню сервера, к примеру, http://example.com. Во вкладке Mappings в поле Local path пишем локальный путь к серверу (с:\mysite).
В настройках конфигурации прописать браузер — firefox и idekey.
5. Использование:
В браузере ткнуть в правом нижнем углу кнопку Start/stop xdebug session, в IDE нажать на кнопку debug, поставить точку останова, обновить страничку.
С момента на писания статьи IDE немного поменялась, про настройку лучше почитать в их официальном блоге — Configuring PHP debugging in PhpStorm 2.0.

Если идёт работа через nginx+php-fpm, то надо прописать порт 9900, к примеру (обычно fastcgi висит на 9000 порту). В nginx.conf в раздел http добавляем fastcgi_read_timeout 600;, а в php/fpm/pool.d/www.confrequest_terminate_timeout = 600 (это для Ubuntu;-) ). Нужно это для того, чтобы nginx и fastcgi не рвали соединение через 60 секунд. (http://habrahabr.ru/qa/1452/).
Xdebug helper уже почему-то не поддерживается, но его можно скачать с официального сайта (правда надо подправить install.rdf, т.к. он устарел), уже модифицированная версия — xdebug_helper-0.3.1-fx (надо поставить расширение xpi).

Если на сервере идёт одновременная работа с нескольких разработческих машин, то надо в ini дописать

Хотя это даст возможность любому зашедшему с правильным ключом запустить любой запрос в режиме отладки, что не хорошо для открытых извне серверов. Если же сервер открыт всем , то можно попробовать использовать Xdebug proxy (phpStorm 2.1 поддерживает прокси).

Описание всех параметров xdebug

3 Responses so far.

  1. Пианист:
    Помогло в настройке , то что вы указали установить версию ts. То есть я скачал PHP 5.3 VC6 TS (32 bit). Также замечу надо устанавливать версию VC, которая совпадает с версией установленного php.
    Далее у меня не видел Xdebug NetBeans. Я исправил это заменив порт 9000 на другой (9001) как в php.ini так и в настройках к NetBeans.
  2. думаю конфликтует с чем-то, много модулей установил перед xDebug. Zend модулей кроме xdebug нет. сам xdebug пашет, барахлит профилирование, само по себе логи создаёт всё норм, НО: при установке опций php.ini, например: xdebug.profiler_enable=1 , xdebug.show_local_vars=1, xdebug.profiler_output_name = cachegrind.out, вообщем большинства, после выполнения любого кода в браузере(в хроме работает вызов phpinfo(); как не странно) страница выпадает в «Internet Explorer не может отобразить эту веб-страницу» в IE или «Соединение было сброшено Во время загрузки страницы соединение с сервером было сброшено» в FF, при этом повторяю дебагер пашет. что за хз?
  3. нашёл сам. надо было ;extension_dir = «ext» закоментировать

LEAVE A COMMENT