Установка xdebug php на Virtualbox с сервером VestaCP и прослушка из VScode

Без debug-инга в нашем деле абсолютно никуда. Очень долго не хотел лезть в эту тему, ибо на разных серверах и с разными редакторами кода, эти настройки делаются по разному. А я, по опыту знаю, что настройка и танцы с бубнами могут занять времени — сутки и более. Где-то столько, я когда-то настраивал связку debug в Open Server & VSCode на винде. Но разработка на винде совсем достала — слабенький виртуальный debian сервачок в 1 ГБ оперативки откликается в 3 раза быстрее, чем сайты на хостовой машине. И это — серьезный повод разрабатывать web приложения под php в виртуальной среде linux. Если в javascript легко обходиться без debug-a благодаря консоли(т.к. консоль отображает любую иерархию объектов), то на php с var_dump и print_r вы далеко в web программировании, в поиске ошибок, в понимании структуры кода, просто не уедите.

Итак, в наличии:

  • Сервер debian на VirtualBox с панелькой VestaCP
  • Удобный редактор VSCode на хостовой винде с дебаггером.

Задача проста: заставить это всё заработать в связке. Как установить саму панельку и настроить сеть рассказано тут. Сначала настройки на сервере:

Посмотрим вывод phpinfo()

xdebug phpinfo
xdebug phpinfo

Теперь откроем /etc/php/7.0/mods-available/xdebug.ini и внесем такие настройки:

чтобы они подхватились, вновь рестарт апача

На сервере готово. Теперь в редакторе VSCode открываем локальную корневую директорию сайта(рабочую область, где мы будем редачить файлы и запускать отладку) и добавляем конфигурацию.

Отладка => Добавить конфигурацию

тут мы указываем директорию от корня в виртуальной машине. Т.е. этим мы как бы указываем связку, соответствие, между директорией на виртуалке и своей локальной директорией(рабочей областью) где мы находимся. Вот и готово. Можно ставить точки останова и вперед отлаживать свой говнокод.

P.S. Если же мы работаем в VScode прямо на сервере, подключаясь напрямую по SSH(не sftp), то параметр

нужно убрать, а конфигурацию отладки можно оставить по умолчанию как она создается, не указывая pathMappings

 

Оставить комментарий

Ваш адрес email не будет опубликован.