2017-02-15 19 views
0

У меня есть бродячий бокс с установленной xdebug, работающий на OSX, но я пытаюсь получить плагин Atom xdebug (php-debug), чтобы подключиться к нему.Vagrant + Xdebug + Atom

Я вставил данные phpinfo(); на сайт проверки xdebug и сказал, что все было хорошо. И вы можете увидеть все настройки xdebug.

Я отобразил порт 9000 в бродячем файле.

config.vm.network :forwarded_port, guest: 9000, host: 9000 

Бродяга коробка имеет принимающей только сеть, которая выставляет 192.168.10.100 как IP сервера.

И я пробовал всякие разные варианты XDebug, упавшее на сайте ATOM плагин предложить ..

xdebug.remote_enable=1 
xdebug.remote_host=127.0.0.1 
xdebug.remote_connect_back=1 
xdebug.remote_port=9000 
xdebug.remote_handler=dbgp 
xdebug.remote_mode=req 
xdebug.remote_autostart=true 

Но это немного сбивает с толку, как remote_connect_back=1 означает, что Xdebug будет игнорировать установку remote_host - так не знаете, почему оба находятся там, - не работают.

Я перезапуск Apache/PHP после того, как каждый раз, когда я изменить параметры, и проверьте, что они загружены phpinfo();

Если я проверить, кто прослушивает порт 9000

COMMAND  PID USER FD TYPE    DEVICE SIZE/OFF NODE NAME 
Atom\x20H 10656 Matt 28u IPv6 0x321cb0a96ba5b593  0t0 TCP *:cslistener (LISTEN) 
VBoxHeadl 10889 Matt 19u IPv4 0x321cb0a981a71433  0t0 TCP *:cslistener (LISTEN) 

Вы можете увидеть, как бродяга (виртуальная коробка) и Atom. Хотя Atom является IPv6, который является нечетным ....

Но включение отладчика в ATOM, установка точки останова и попадание на сайт, ничего не происходит - ATOM никогда не подключается.

Любые идеи? Кто-нибудь получил это на работу?

+0

Откуда у вас были эти инструкции? Любое конкретное руководство? Кажется, что недоразумение в том, как xdebug работает вообще. 1) * «Но это немного сбивает с толку, поскольку remote_connect_back = 1 означает, что xdebug будет игнорировать настройку remote_host» * Вы правы - этот параметр здесь не нужен - лучше установить '0' – LazyOne

+0

2)' xdebug. remote_host = 127.0.0.1' - это неправильно (если вы не будете выполнять отладки через туннель SSH). Это должен быть IP-адрес, в котором работает отладочный клиент (Atom в вашем случае). Это xdebug, который подключается к клиенту, а НЕ наоборот: https://xdebug.org/docs/remote 3) Это также означает, что IP-адрес должен быть как видно из этой машины-бродяги. Самый простой способ получить это - посмотрите на '$ _SERVER ['REMOTE_ADDR']' – LazyOne

+0

4) Это также означает, что вам не нужно выставлять 9000 портов в Vagrant - никто не будет подключаться к нему (например, вы используете порт 80 для веб-сервера) - это xdebug из VM/гостевой ОС будет подключаться снаружи к вашей «реальной»/основной ОС. Если что угодно - он должен разрешать исходящие соединения на этом порту вместо входящих. 5) * «Если я проверяю, кто прослушивает порт 9000», это означает, что Atom не может получить входящее соединение xdebug через TCPv4 .., который xdebug будет пытаться использовать по умолчанию – LazyOne

ответ

2

Но это немного сбивает с толку, как remote_connect_back=1 означает, что Xdebug будет игнорировать remote_host установки

Вы правильно - эта опция не нужна там - лучше быть установлен в 0

xdebug.remote_host = 127.0.0.1

Это неправильно (unles s вы будете отлаживать через туннель SSH). Это должен быть IP-адрес, в котором работает отладочный клиент (Atom в вашем случае). Это Xdebug, который подключается к клиенту и НЕ наоборот: https://xdebug.org/docs/remote

Это также означает, что IP должен быть, как видно из этой Бродячей машины. Возможно, самый простой способ получить это - посмотреть, что есть $_SERVER['REMOTE_ADDR'].

Я отобразил порт 9000 в бродячем файле.

config.vm.network :forwarded_port, guest: 9000, host: 9000

Вам не нужно выставлять 9000 порт в Vagrant - никто не будет подключаться к нему (как вы делаете с портом 80 для веб-сервера) - это Xdebug от VM/гостевой ОС будет подключаться снаружи к вашей «реальной»/основной ОС.

В любом случае - вы должны разрешать исходящие соединения на этом порту вместо входящих.

Если я проверить, кто прослушивает порт 9000

Это один означает, что атом не может получить входящее соединение Xdebug над TCPv4 .. который Xdebug будет пытаться использовать по умолчанию (если не задан IPv6 адрес в xdebug.remote_host).


Если что-нибудь - собирать журнал Xdebug (xdebug.remote_log) и посмотреть, где он пытается соединиться и т.д.

0

@LazyOne уже ответил на этот вопрос, но вопрос я был вызван антивирусами (MCafee), который был блокирование входящего трафика. Возможно, это поможет кому-то в будущем.