Как отладить PHP, работающий в локальном контейнере докеров, с помощью VSC?Php

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как отладить PHP, работающий в локальном контейнере докеров, с помощью VSC?

Сообщение Anonymous »

Контекст

У меня проблема с моим веб-сайтом 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
Моя конфигурация xdebug.ini:

Код: Выделить всё

zend_extension=xdebug
xdebug.mode = debug
xdebug.start_with_request = yes
xdebug.client_host=host.docker.internal
Мой файл launch.json

Код: Выделить всё

{
"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"
}
}
]
}
Затем я запускаю «Local Docker Xdebug» и вижу, что порт прослушивается.
Когда я делаю запрос, страница открывается, но отладчик не подключается/ стоп.
Есть идеи, чего не хватает?
Обновить

Спасибо замечательному комментарии ниже я добавил страницу с 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
Выглядело позитивно, но это независимо от отладчика VSC. Поэтому, если отладчик не прослушивает, информационная страница по-прежнему сообщает мне «Отладчик: активен» (я думаю, потому что моя публикация порта докера открывает этот порт для передачи его в контейнер). Похоже, что xdebug проверяет только открытый порт, а не проверяет, прослушивает ли настоящий отладчик на другом конце.
В 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как отладить PHP, работающий в локальном контейнере докеров, с помощью VSC?
    Anonymous » » в форуме Php
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Как отладить PHP, работающий в локальном контейнере докеров, с помощью VSC?
    Anonymous » » в форуме Php
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • Как отлаживать PHP, работающий в локальном контейнере докеров, с помощью VSC?
    Anonymous » » в форуме Php
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Как отлаживать PHP, работающий в локальном контейнере докеров, с помощью VSC?
    Anonymous » » в форуме Php
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Добавление xdebug в мой файл докеров php apache приводит к сбою контейнера докеров
    Anonymous » » в форуме Php
    0 Ответы
    130 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Php»