Visual Studio Extention PHP Отладка не подключается - PullRequest
0 голосов
/ 08 января 2020

У меня установлен Visual Studio Code 1.41.1 с PHP Отладочная версия - 1.13.0.

https://marketplace.visualstudio.com/items?itemName=felixfbecker.php-debug

Я работаю PHP Стек ламп в Ubuntu, моя PHP информация показывает «xdebug xdebug support enabled - Version 2.9.0»

My PHP .ini настроен следующим образом:

[XDebug]
zend_extension = /usr/lib/php/20170718/xdebug.so
xdebug.remote_enable = 1
xdebug.remote_autostart = 1
xdebug.remote_connect_back = 1
xdebug.remote_handler = dbgp
;xdebug.remote_host = 192.168.1.103
xdebug.remote_port=9000
xdebug.remote_log=/var/log/xdebug.log

My Запустите. json выглядит следующим образом:

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Listen for XDebug",
            "type": "php",
            "request": "launch",
            "port": 9000,
            "hostname": "192.168.1.23"
        },
        {
            "name": "Launch currently open script",
            "type": "php",
            "request": "launch",
            "program": "${file}",
            "cwd": "${fileDirname}",
            "port": 9000,
            "hostname": "192.168.1.23"
        }
    ]
}

Мой сервер работает на 192.168.1.23, а мой ide работает на 192.168.1.103.

Когда я пытаюсь 'Listen for XDebug 'или' Запустить открытый скрипт 'я получаю следующую ошибку:

Error: listen EADDRNOTAVAIL: address not available 192.168.1.23:9000
    at Server.setupListenHandle [as _listen2] (net.js:1209:19)
    at listenInCluster (net.js:1274:12)
    at doListen (net.js:1413:7)
    at processTicksAndRejections (internal/process/task_queues.js:84:9) {
  code: 'EADDRNOTAVAIL',
  errno: 'EADDRNOTAVAIL',
  syscall: 'listen',
  address: '192.168.1.23',
  port: 9000
}

Я пытался установить xdebug.remote_connect_back на 0 и 1 и явно указать IP удаленного хоста с xdebug.remote_host = 192.168. 1.103 или тоже комментируя

Ошибка почти мгновенно возникает в Visual Studio, что указывает на то, что она блокируется локально.

Глядя на мой файл журнала: xdebug.log Я получаю:

[2268] Log opened at 2020-01-08 12:39:09
[2268] I: Connecting to configured address/port: 192.168.1.103:9000.
[2268] E: Time-out connecting to client (Waited: 200 ms). :-(
[2268] Log closed at 2020-01-08 12:39:09

[2225] Log opened at 2020-01-08 13:09:37
[2225] I: Checking remote connect back address.
[2225] I: Checking header 'HTTP_X_FORWARDED_FOR'.
[2225] I: Checking header 'REMOTE_ADDR'.
[2225] W: Remote address not found, connecting to configured address/port: localhost:9000. :$
[2225] W: Creating socket for 'localhost:9000', poll success, but error: Operation now in pr$
[2225] E: Could not connect to client. :-(
[2225] Log closed at 2020-01-08 13:09:37

Файл журнала кажется медленным для записи - я не удивлен е какое событие вызывало события в журнале. Я подозреваю, что это был доступ к веб-странице непосредственно с моего удаленного хоста, а не через код Visual Studio.

Я также установил свой брандмауэр защитника windows на порт 9000.

Редактирование на основе в комментариях. 192.168.1.103 Это IP-адрес компьютера windows 10, на котором работает код Visual Studio. На машине также запущена версия 6.0.8 r130520 (Qt5.6.2), а IP-адрес виртуальной машины - 192.168.1.23.

Я обновил время ожидания до 2000 мс.

I Я заметил, что если я выключаю виртуальную машину, VS C пытается подключиться, а остальные пытаются подключиться гораздо дольше. Тогда как виртуальная машина работает, она мгновенно выдает ошибки. Что может означать, что виртуальная машина блокирует порт?

Наконец - что инициирует вход в xdebug.log. Будет ли загрузка файла PHP на веб-сайт триггера выводить регистратор? Причина, по которой я спрашиваю, состоит в том, что я не могу различить, вызвать ошибку, но при открытии файла журнала между дельтами времени, т. Е. Сегодня по сравнению с прошлой ночью, были сгенерированы различные ошибки?

Машина и виртуальная машина - оба защищен за брандмауэрами на основе маршрутизатора, поэтому это не будет внешним трафиком c.

Виртуальная машина работает на клиентской машине windows 10, как и ожидалось. Просто не удается подключить отладчик. Но PHP / MYSQL / APACHE все работают правильно.

Ответы [ 2 ]

0 голосов
/ 03 февраля 2020

Проблема была связана с брандмауэром, блокирующим входящие соединения. Это было решено с помощью следующих шагов для меня:

Установить UFW -

sudo apt-get install ufw
sudo ufw enable
sudo ufw allow 9000/tcp

В моем Php .ini я использую следующие настройки:

[dDebug]
zend_extension = /usr/lib/php/20190902/xdebug.so
xdebug.remote_enable = 1
xdebug.remote_autostart = 1
xdebug.remote_connect_back = 1
xdebug.remote_port=9000

Наконец, мой запуск Json имеет следующее:

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Listen for XDebug",
            "type": "php",
            "request": "launch",
            "port": 9000,
            "pathMappings": {
                "/var/www/html/YourApp": "${workspaceRoot}/"
              }

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

JSON предполагает, что рабочее пространство указывает на root исходных данных, и оно не спрятано внутри подпрограммы. папка.

Наконец, вы захотите добавить правила UFW для удаленного доступа к вашему веб-серверу, так как они не присутствовали по умолчанию в UFW после установки

sudo ufw app list
sudo ufw allow 'Apache Full'

Я также добавил другие правила из мой список приложений с использованием этого метода.

Я надеюсь, что это поможет кому-то вроде меня, который изо всех сил пытался подключиться к xDebug на недавно развернутой виртуальной машине Ubuntu 18.04.4.

0 голосов
/ 08 января 2020

Похоже, что что-то еще уже прослушивает порт 9000, и, следовательно, VS не может открыть тот же порт для прослушивания. Вероятно, это PHP -FPM.

Чтобы обойти это, установите вместо этого в php .ini следующее:

xdebug.remote_port=9003

и измените конфигурацию VS (дважды ) к этому же порту:

"port": 9003,
...