svisch
@svisch

Как правильно дебажить php в VS Code?

Здравствуйте. Обращаюсь к вам как к последней инстанции в надежде разобраться!
Пытаюсь настроить дебаг в vs code кода, находящегося на удаленном сервере. Прочитал кучу статей, оф документации, видео на трубе, но никак не могу понять как это делать правильно!
Итак, на данном этапе имею установленное расширение xdebug на сервере. Настройки:
xdebug.mode=debug
xdebug.client_host = xx.xx.xxx.xxx
xdebug.client_port = 9003
;xdebug.start_with_request = yes
xdebug.idekey="vscode"

в phpinfo() выдает, что xdebug включен и работает:
61b753e1cc705562084325.png

В VS Code установил расширение PHP Debug, а в Crome - XDebug Helper (правда еще не понял зачем оно)
Также в VSC idekey прописал как в настройках xdebug php.

Mонтирую попку с сервера на свой комп. Добавляю конфигурацию в launch.json
{
      "name": "Listen for Xdebug",
      "type": "php",
      "request": "launch",
      "port": 9003
    },


В роутере сделал проброс запросов извне DMZ на ip компа. Причем следует отметить что с сервера комп по порту 9003 пингуется только когда запуская в vscode отладку.

Вроде все. При запуске отладки после выставления брейкпоинтов ничего не происходит, висит процесс отладки типа выполняется. Ф.з в чем дело.
Поясните пожалуйста сам механизм всех взаимодействий между vscode, браузером и сервером, чтоб можно наблюдать переменные или что там еще в нужных мне брейкпоинтах.
  • Вопрос задан
  • 331 просмотр
Решения вопроса 1
svisch
@svisch Автор вопроса
Решил следующим образом. Может кому пригодится.
Конфигурация в на сервере xdebug 3 (дла версий младше 3й другие наименования параметров):
xdebug.mode=debug
xdebug.start_with_request=yes
xdebug.client_host=<ip машины где стoит ide>
xdebug.discover_client_host = 1
xdebug.idekey = vscode
xdebug.client_port=9003
xdebug.discover_client_host = 1

В случае если отладка происходит кода в докере, то ip надо посмотреть командой типа ip -a. У меня был 172.17.0.1. На видео, которое мне помогло сработал 172.19.0.1. Но +/- будте примерно таким. Если че вот то видео
Не забыть пробросить запросы от роутера к компу с IDE, если он стоит за роутером (я по крайней мере делал это). Не проверял будет ли работать без проброски.

Конфигурация launch.json
{
    "name": "Listen for Xdebug",
    "type": "php",
    "request": "launch",
    "port": 9003,
    "pathMappings": {
      "/var/www/html": "${workspaceFolder}/www"
  },

Про pathMappings уточню. "/var/www/html"-путь на сервере (или например в докере) где лежит код. "${workspaceFolder}/www" - папка где лежит относительно IDE. В данном случае это конфиг с проекта в докере и www отображает /var/www/html в контейнере. ${workspaceFolder} - насколько я понял, папка с проектом в VS Code. На удаленном сервере pathMappings был без www: "/var/www/html": "${workspaceFolder}"

После этого необходимо открыть файл, который собираетесь отладить, переключиться на вкладку "Запуск и отладка" (значок play c жучком), расставить брейкпоинты в файле и нажать кнопку отладки. Она начнет выполняться. Далее открываем на сайте именно ту страницу, за которую отвечает отлаживаемый файл и вас автоматом перенаправит обратно в VS Code и появятся элементы управления отладки и переменные различные которые появляются в процессе.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы