Отладка с помощью XDebug и PhpStorm (дополнение)

Доброго времени суток, %username%!

Прочитал сегодня статью «Отладка с помощью XDebug и PhpStorm на примере сайта 1С-Битрикс». В ней автор использует «зеленого жука» для запуска отладки. В комментариях предложены еще несколько методов запуска отладки, такие как специальные закладки, различные плагины и т.д. На мой взгляд, все это неудобно, к тому же есть наиболее простой и удобный вариант. Я мог бы предложить его в комментариях к статье, но, увы, в read-only это невозможно. Посему вынужден писать отдельную статью.

У xdebug есть возможность автостарта, без всяких премудростей. Достаточно просто расставить breakpoint'ы и открыть Ваше приложение в браузере, xdebug будет подхватывать старт сам.

Итак, моя конфигурация:
  • Веб-сервер — OpenServer 4.8.8
  • PHP 5.4.17
  • XDebug 2.2.3
  • IDE PhpStorm 7.1.


1. Настройка XDebug

В php.ini подключаем расширение и устанавливаем параметры:
zend_extension="%путь до php%/ext/php_xdebug.dll"
;эта опция как раз и отвечает за автостарт
xdebug.remote_autostart=on
xdebug.remote_enable=on
xdebug.remote_handler="dbgp"
xdebug.remote_host="localhost"
;порт может быть и 9000, но у openserver он зарезервирован под php
xdebug.remote_port=9001
xdebug.remote_mode=req
;ключ IDE (может быть любым) понадобится позже
xdebug.idekey="PHPSTORM"

2. Настройка PhpStorm

Настраиваем интерпретатор, если у вас это еще не сделано.

image

image

Далее добавляете сервер, если вы сервер локальный, то пишете в поле Host — localhost, если удаленный то адрес удаленного хоста. Имя хоста здесь и в php.ini должно совпадать.

image

Настраиваем XDebug. Порт берем из php.ini (xdebug.remote_port). Если вам не нужно чтобы XDebug останавливался на первой строчке приложения, отключаем два нижних чекбокса.

image

Здесь значения так же берем из php.ini: IDE key -> xdebug.idekey, Host -> xdebug.remote_host, Port -> xdebug.remote_port.

image

На этом настройка завершена, можно пользоваться.

Использование

Для начала работы расставляете breakpoint'ы, включаете прослушку порта XDebug и открываете ваше приложение.

image

image

Breakpoint'ы будут ловиться автоматически, без необходимости тыкать в «зеленого жука». Надеюсь информация кому-нибудь пригодится.

На этом все, спасибо за внимание.

P.S. Статья уже около года висела в песочнице, но до сих пор актуальна, поэтому публикую ее. Спасибо jeston за приглашение.
Share post
AdBlock has stolen the banner, but banners are not teeth — they will be back

More
Ads

Comments 15

    +2
    Если использовать «зелёную трубку» в PhpStorm, то настраивать DBGProxy и IDE Key не нужно, это ни на что не повлияет, IDE Key вообще может различаться в php.ini и в PhpStorm.

    И второе: запущенный xdebug (вне зависимости от того, запущен PhpStorm или нет) заметно тормозит приложение, поэтому вместо remote_autostart=on рекомендую использовать букмарклеты.
      +1
      Спасибо за замечание. Действительно DBGProxy и IDE Key настраивать не обязательно.
      Насчет remote_autostart=on согласен, тормозит ужасно. Но без него у меня почему-то breakpoint не ловится, нужно будет поэксперементировать.
    0
    Поглядел статью в скользь и судя по всему единственное отличие в remote_autostart=on, так и для профайла и для трейс такие же есть насколько я помню, и их название как бы однозначно. А если в целом remote_autostart=on — зло по тому что будет тормозить выполнение. Отладчик надо запускать когда он нужен. На случай если не хочется ставить cookie с idekey, то можно запускать отладку по сессиям.
      +1
      Десятки раз уже обсасывалось в статьях и куча инфы гуглится, кто-то еще до сих пор не умеет?
      ps еще порт пробросить надо если через роутер в инет выходим
        +5
        Настроил XDebug — напиши «статью» на хабр!
        +1
        Добавлю, что если у вас несколько разработчиков, а удаленный тестовый сервер один, то включаем
        xdebug.remote_connect_back=1
        и xdebug коннектится к каждому из разработчиков сам,
        а не пытается законнектиться на remote_host, указанный в php.ini
        0
        Для firefox-а есть замечательный плагин addons.mozilla.org/ru/firefox/addon/the-easiest-xdebug/ позволяющий включить отладку (и не только) для любой нужной страницы.
          +1
          NetBeans + WAMP + Chrome NetBeans plugin = получаем дебаг без никаких настроек, и сам NetBeans бесплатный.
            0
            Подскажите — а PHPStorm позволяет отлаживать консольные скрипты (как это легко делается в Komodo IDE — нажал F9 на нужной строчке, потом F5 и готово) — без запуска их в браузере?
              0
              Конечно умеет. И тесты позволяет загружать на удалённый сервер, там их запускать и получать результаты.
              0
              Кто-нибудь знает как настроить отладку при подключении к серверу через VPN?
              IDEA/PhpStorm слушает указанный порт (к примеру 9000) только на IP, выданном «железной» сетевой карте. А второй IP, который выдает OpenVPN, IDE не слушает, и со стороны сервера за VPN на этот порт невозможно достучаться. Запущенный на этой же машине ftp-сервер на 21 порту со стороны сервера виден. Грешил на фаервол, но явное открытие порта тоже не помогло. Пришлось пробросить порт через роутер, и прописать в настройках xdebug.remote_host мой внешний IP. Однако, это очень неудобно.
                0
                попробуйте как-нибудь так:
                netcat -L $hardware_ip:9001 -p 9000
                


                ну а IDE пусть слушает, соответственно, 9001
                0
                спасибо

                Only users with full accounts can post comments. Log in, please.