Без 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()
Теперь откроем /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