Установка 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 на хостовой винде с дебаггером.

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

apt install php-xdebug
# ставим пакет
/etc/init.d/apache2 restart
# рестартим апач
php -m
# проверяем xdebug в списке установленных пакетов

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

xdebug phpinfo
xdebug phpinfo

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

zend_extension=xdebug.so
xdebug.show_error_trace=1
xdebug.remote_enable = 1
xdebug.remote_autostart = 1
xdebug.remote_connect_back = 1

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

/etc/init.d/apache2 restart

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

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

{
    "configurations": [
        {
            "name": "Listen for XDebug",
            "type": "php",
            "request": "launch",
            "port": 9000,
            "pathMappings": {
                "/home/admin/web/example.com/public_html": "${workspaceRoot}"
            }
        }
    ]
}

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

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

xdebug.remote_connect_back = 1

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

 

Оставить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *