Почему XDebug не может подключиться в другой сети? - PullRequest
0 голосов
/ 26 января 2020

Я знаю, что на inte * есть много постов на эту тему rnet, но я отлаживаю это уже два дня и, похоже, больше ничего не получаю.

Настройка
У меня (довольно старый) блок Vagrant на моем рабочем ноутбуке, который был настроен в основном бывшими коллегами. Кажется, все работает для меня и моих коллег, поэтому у нас не было никаких причин устанавливать совершенно новый.

В коробке Vagrant находится установка Centos, на которой мы разрабатываем веб-сайты.

Хост-машина Windows 10.

Проблема
Когда в офисе подключен к физической сети (по кабелю), я могу без проблем использовать XDebug , Я включаю XDebug из моего Firefox плагина для браузера и XDebug на Centos, затем подключаюсь к PHPStorm на Windows, так что я могу пошагово пройти через код.

Однако, когда я дома, на WIFI (у меня нет кабель) XDebug просто не будет работать.

Журнал XDebug на машине Vagrant в настоящее время сообщает следующее:

I: Checking remote connect back address.
I: Checking header 'HTTP_X_FORWARDED_FOR'.
I: Checking header 'REMOTE_ADDR'.
I: Remote address found, connecting to 10.10.10.1:9000.
E: Time-out connecting to client. :-(

Исследования
Во многих сообщениях Я прочитал, что адрес хоста Vagrant должен быть примерно 10.0.2.2. Что касается моей информации, в нашем случае она всегда была 10.10.10.1.

Я также прочитал, что из поля Vagrant вы должны проверить IP-адрес хоста с помощью netstat. IP-адрес хоста будет шлюзом по умолчанию.

Дома (в то время как на WIFI) я проверил это, и на выходе было:

netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         192.168.220.2   0.0.0.0         UG        0 0          0 ens32
10.10.10.0      0.0.0.0         255.255.255.0   U         0 0          0 ens33
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 ens33
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 ens34
192.168.56.0    0.0.0.0         255.255.255.0   U         0 0          0 ens34
192.168.220.0   0.0.0.0         255.255.255.0   U         0 0          0 ens32

Здесь шлюз по умолчанию - "192.168.220.2". Поэтому я попытался установить этот IP для xdebug, вручную установив для remote_host XDebug значение 192.168.220.2 и отключив remote_connect_back

Теперь в журнале говорится:

I: Connecting to configured address/port: 192.168.220.2:9000.
W: Creating socket for '192.168.220.2:9000', poll success, but error: Operation now in progress (29).
E: Could not connect to client. :-(
Log closed at 2020-01-26 08:19:34

Из других сообщений, которые я понял, что это на самом деле хуже, а IP-адрес просто неправильный, потому что это должен быть внутренний IP-адрес, такой как 10.10.10.1

Edit 1: Я проверял это сегодня, пока в офис, подключенный к физической сети. XDebug работает как положено, но вывод netstat для шлюза такой же, что, вероятно, не имеет к этому никакого отношения:

Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         192.168.220.2   0.0.0.0         UG        0 0          0 ens32
10.10.10.0      0.0.0.0         255.255.255.0   U         0 0          0 ens33
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 ens33
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 ens34
172.24.1.0      0.0.0.0         255.255.255.0   U         0 0          0 ens34
192.168.220.0   0.0.0.0         255.255.255.0   U         0 0          0 ens32

Edit 2: Находясь в офисе, Теперь я также протестировал XDebug в режиме WIFI (отключив физический сетевой кабель), а затем XDebug больше не работает. Таким образом, проблема, похоже, не в том, чтобы указывать c на мою домашнюю сеть, а скорее на то, чтобы быть в физической сети VS WIFI.

PHPStorm говорит, что я в порядке
PHPStorm имеет этот xdebug проверяет экран в настройках. Попытка пройти все с зелеными проверками. Очевидно, что валидация не подтверждает достаточно?

Интересно отметить
Одновременно я также пытался смонтировать общий ресурс Samba из Windows в мой блок Vagrant. Я хотел поэкспериментировать с этой настройкой, но так же, как XDebug, команда mount не может связаться с хост-машиной.

Редактировать: Я тестировал это сегодня, находясь в офисе в физической сети и тогда это тоже не работает. Таким образом, мы можем, вероятно, забыть об этом на данный момент, поскольку это, кажется, совершенно другая проблема.

Редактировать 27-01: Я думал, что я исправил проблему, но это работало только при использовании WIFI в офисе. Дома это все еще не работает. Исправление в офисе было связано с IP-маршрутами на сервере Centos.

Редактировать 29-01:
У меня все еще не работает, но я думаю, что после нескольких тестов Я могу утверждать, что виртуальная машина может достигать хоста: - ping 10.10.10.1 работает - nmap -p 9000 10.10.10.1, кажется, говорит мне, что она может достигать порта

Кроме того, сегодня я обнаружил, что когда PHPStorm не прослушивает порт 9000, файл журнала XDebug говорит:
«Создание сокета для« 192.168.220.2:9000 », успешный опрос, но ошибка: операция в процессе (29)». Но когда PHPStorm прослушивает соединение, журнал XDebug сообщает:
"Удаленный адрес найден, подключение к 10.10.10.1:9000"

Тот факт, что сообщение об ошибке на стороне виртуальной машины изменяется при изменении состояния хоста, заставляет меня поверить, что соединение устанавливается.

Это означало бы, что - по какой-то причине - PHPStorm просто не может обрабатывать входящее соединение. Единственная причина, по которой я мог придумать, заключается в том, что PHPStorm может быть не в состоянии общаться с виртуальной машиной ?? Это звучит правдоподобно? И если да, то как это дальше расследовать?

1 Ответ

2 голосов
/ 27 января 2020

Следующая фраза указывает на то, что соединение установлено.

W: Creating socket for '192.168.220.2:9000', poll success, but error: Operation now in progress (29).

Вы уверены, что PhpStorm локально прослушивает порт 9000? И что твоя коробка Vagrant может с ней разговаривать?

Давайте выясним первый: в оболочке на вашем хосте (который, я полагаю, работает Windows в обоих случаях) выполните:

C:\> netstat -a -b

И убедитесь, что это процесс PhpStorm , который прослушивает через порт 9000. Если это что-то другое, измените порт в конфигурации PhpStorm на что-то другое (скажем, 9003) и задайте для этого же порта значение для xdebug.remote_port в php.ini. Отключите «прослушивание отладочных подключений» в PhpStorm и снова включите его.

Во-вторых, проверьте, может ли блок Vagrant общаться с этим портом

...