У меня проблема с моим веб-сайтом PHP. Чтобы решить эту проблему, я хочу пройтись по коду. Я на машине с Windows, использую VSC в качестве IDE. PHP работает в контейнере докера параллельно с контейнером nginx.
Проблема
Я не знаю, как подключить свой Отладчик VSC со средой выполнения PHP в контейнере Docker.
Я установил/включил Xdebug и добавил файл launch.json, но отладчик VSC не реагирует на запросы страниц.
Подробнее о том, что я попробовал
Xdebug, кажется, работает. По крайней мере, php -v (в контейнере php) возвращает
Код: Выделить всё
PHP 8.2.26 (cli) (built: Nov 21 2024 17:59:18) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.26, Copyright (c) Zend Technologies
with Xdebug v3.4.0, Copyright (c) 2002-2024, by Derick Rethans
Код: Выделить всё
zend_extension=xdebug
xdebug.mode = debug
xdebug.start_with_request = yes
xdebug.client_host=host.docker.internal
Код: Выделить всё
{
"version": "0.2.0",
"configurations": [
{
"name": "Local docker Xdebug",
"type": "php",
"request": "launch",
"hostname": "localhost",
"port": 9003,
"stopOnEntry": true,
"pathMappings": {
"/var/www/amc/plattform": "${workspaceFolder}\\amc"
}
}
]
}
Когда я делаю запрос, страница открывается, но отладчик не подключается/ стоп.
Есть идеи, чего не хватает?
Обновить
Спасибо замечательному комментарии ниже я добавил страницу с xdebug_info(); и включил ведение журнала xdebug.
Я получаю:
Код: Выделить всё
[Step Debug] Time-out connecting to debugging client, waited: 200 ms. Tried: host.docker.internal:9003 (through xdebug.client_host/xdebug.client_port).
Вдохновленный этим ответом SO, который я добавил
Код: Выделить всё
extra_hosts:
- "host.docker.internal:host-gateway"
Я не думаю, что это правильный путь, но я также попытался добавить 9003:9003 к опубликованным порты контейнера. Я был удивлен, поскольку ошибка исчезла. К сожалению, VSC по-прежнему не отреагировал.
Появилась информационная страница
Код: Выделить всё
Debugger Active
Connected Client host.docker.internal:9003
В xdebug.log показано
Код: Выделить всё
[7] Log opened at 2024-12-02 22:04:21.868029
[7] [Config] WARN: Not setting up control socket with default value due to unavailable 'tsc' clock
[7] [Step Debug] INFO: Connecting to configured address/port: host.docker.internal:9003.
[7] [Step Debug] INFO: Connected to debugging client: host.docker.internal:9003 (through xdebug.client_host/xdebug.client_port).
[7] [Step Debug] ->
[7] [Step Debug] ->
[7] Log closed at 2024-12-02 22:04:21.893973
Подробнее здесь: https://stackoverflow.com/questions/792 ... r-with-vsc