Отладка PHP кода Visual Studio не останавливается на точках останова для проекта Docker - PullRequest
0 голосов
/ 16 октября 2018

Я не могу заставить расширение VS Code "Php debug" остановиться на каких-либо точках останова.Я запускаю проект php (который я хочу отладить) из Docker на моем ноутбуке Ubuntu.Любой совет с благодарностью.

Мои настройки:

  • Версия PHP на Docker: 7.1
  • Версия XDebug на Docker: 2.6.1
  • Отладочная версия PHP в VS Code (на моем ноутбуке): 1.12.6

Файл My Code Code launch.json:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Listen for XDebug",
            "type": "php",
            "request": "launch",
            "port": 9000,
            "log": true,
            "pathMappings": {
                "/var/www/html": "/home/chris/my-test-debugging-project"
            }
        },
        {
            "name": "Launch currently open script",
            "type": "php",
            "request": "launch",
            "program": "${file}",
            "cwd": "${fileDirname}",
            "port": 9000
        }
    ]
}

my / usr / local / etc /Конфигурация php / conf.d / xdebug.ini:

zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20160303/xdebug.so
xdebug.remote_enable=1
xdebug.remote_autostart=1
xdebug.remote_host=172.17.0.2
xdebug.remote_log=/var/www/html/xdebug.log
xdebug.remote_connect_back=0
xdebug.remote_port=9000

Файл журнала XDebug (из настройки xdebug.remote_log в php.ini):

    Log opened at 2018-10-14 05:47:16
    I: Connecting to configured address/port: 172.17.0.2:9000.
    W: Creating socket for '172.17.0.2:9000', poll success, but error: Operation now in progress (29).
    E: Could not connect to client. :-(
    Log closed at 2018-10-

14 05:47:16

Вывод журнала отладки PHP (из настройки "log": true в launch.json):

<- launchResponse
Response {
seq: 0,
type: 'response',
request_seq: 2,
command: 'launch',
success: true }

Ответы [ 3 ]

0 голосов
/ 16 октября 2018

Попробуйте установить xdebug.remote_connect_back=1 и дайте мне знать, если это работает.

Если это произойдет, мы, вероятно, должны закрыть этот вопрос как дубликат вопроса , на который я ранее ответил .

0 голосов
/ 19 мая 2019

Я запускаю локальный веб-сервер Linux на виртуальной машине.И используя samba, я отобразил на устройстве Windows букву «моя доля». Я следовал всем советам, но точки останова работали не так, как предполагалось.Я мог только отладить добавление «stopOnEntry»: true »в launch.json, но не на лично добавленные точки останова, все они были проигнорированы. Моя проблема заключалась в том, что мое приложение работало, я исправил это так:

{
        "name": "Listen for XDebug",
        "type": "php",
        "request": "launch",
        "port": 9900,             
        "log": true,
       "stopOnEntry": false,
        "pathMappings": {
             "/var/www/html/booking" : "z:",

          }
 },

    {
        "name": "Launch currently open script",
        "type": "php",
        "request": "launch",
        "program": "${file}",
        "cwd": "${fileDirname}",
        "port": 9900
    }
]

}

Это, безусловно, мой путь к Linux -> "/ var / www / html / booking" А это буква диска -> "z:"

0 голосов
/ 16 октября 2018

Как я знаю, 9000 - это порт php-fpm, который используется по умолчанию.Так что если вы используете тот же порт для xdebug.remote_port=9000, он не будет работать.Вы можете проверить, что с помощью nginx conf в качестве примера мой cat /etc/nginx/conf.d/site.conf вы можете проверить, что строка fastcgi_pass 127.0.0.1:9000; или запуск lsof -n -iTCP:9000 | grep LISTEN покажет, используется ли она.Я бы посоветовал вам

  • заменить его на что-то неиспользуемое, например: 10000
  • xdebug.remote_host может произойти сбой, войти в контейнер и попытаться пропинговать 172.17.0.2, если онне работает ваш xdebug.remote_host не так.Найдите ip хост-машины и замените его на текущий 172.17.0.2
...