xdebug vscode docker Запуск и отладка PHP из командной строки, терминала или из браузера Пример launch.json
Primary tabs
Примечание:
- Эта инструкция - частный случай общей идеи настройки xDebug
- Видео-обзор конфигурации ниже для запуска консольного скрипта: https://youtu.be/Br9l8yXNHZE
Конфиг xdebug
По аналогии с обычной установкой (см. наш пример для линукса) в xdebug.ini укажем 5 опций:
zend_extension=xdebug xdebug.mode=debug xdebug.client_host=host.docker.internal xdebug.client_port=9003 xdebug.idekey="netbeans-xdebug"
где:
- xdebug.idekey -- просто значение, на практике не важно что именно мы тут укажем, оставляем значение netbeans-xdebug для того, чтобы можно было проводить отладку и в нетбинс
- host.docker.internal -- важная штука, это "доменное имя" заменяет адрес нашей реальной ОС, в которой и стоит IDE, которая будет слушать сообщения от xdebug
launch.json
Добавим/поправим конфигурацию в .vscode/launch.json - можно использовать подход вроде:
{
"name": "Listen for Xdebug",
"type": "php",
"request": "launch",
"port": 9003,
"pathMappings": {
"/var/www": "${workspaceRoot}",
}
},Где для докера очень важно отражение путей:
"/var/www": "${workspaceRoot}",-- в моем случае я говорю, что директория /var/www внутри контейнера соответствует корню проекта (vscode использует для этого заменитель ${workspaceRoot} )
Запуск PHP скрипта в терминале
Запуск скрипта в терминале тут нуждается в указании на то, что xdebug нужно активировать, запускать будем напр. так:
php -d xdebug.start_with_request=yes вашскрипт.php
например для codeception:
php -d xdebug.start_with_request=yes vendor/bin/codecept run tests/functional/api/v1/UserCest.php:getInfo
-- тут в роли файла скрипта выступает vendor/bin/codecept (в вашем случае тоже расширение файла может быть или не быть), а далее идут уже параметры, для codeception.
Примечание: чтобы xdebug не работал все время, мы не стали добавлять параметр
xdebug.start_with_request=yes
в файл конфига выше, а указывает его для конкретной команды, только кода нужно. Это здорово сэкономит ресурсы системы.
- Log in to post comments
- 2039 reads
vedro-compota
Wed, 06/29/2022 - 19:23
Permalink
Логгирование
Чтобы проще разбираться с проблемами (если xdebug не подключается), можно включить логгирование внутри IDE vscode для процесса отладки ("log": true,):
{ "name": "Listen for Xdebug", "type": "php", "request": "launch", "port": 9003, "log": true, "pathMappings": { "/var/www": "${workspaceRoot}", } },_____________
матфак вгу и остальная классика =)