2017-01-02 6 views
2

Использование MacOS Sierra, PhpStorm и Xdebug, веб-приложение, настроенное на порт 80 (не работает от PhpStorm).PhpStorm + Xdebug ударяет точку останова только при использовании внешнего IP-адреса

При просмотре до localhost:80/index.php, PhpStorm не останавливается в точке останова при доступе к внешнему IP-адресу 192.168.1.2/index.php, PhpStorm попадает в точку останова.

Я бы хотел использовать localhost для отладки вместо внешнего IP.

Есть ли способ заставить PhpStorm работать с localhost?

P.S. Код Visual Studio работает в обоих сценариях (поэтому я считаю, что Xdebug и PhpStorm работают хорошо).

[xdebug] 
zend_extension = /usr/local/Cellar/php56/5.6.29_5/lib/php/extensions/debug-non-zts-20131226/xdebug.so 
xdebug.remote_enable=1 
xdebug.remote_handler=dbgp 
xdebug.remote_port=9000 
xdebug.remote_autostart=1 
xdebug.remote_connect_back=1 
xdebug.idekey=vagrant 
xdebug.remote_host=0.0.0.0 

Пытались установить xdebug.remote_host к 127.0.0.1 и локальный, такое же поведение.

При отладке Localhost: 80, журнал Xdebug шоу:

Log opened at 2017-01-03 14:06:36 
I: Checking remote connect back address. 
I: Checking header 'HTTP_X_FORWARDED_FOR'. 
I: Checking header 'REMOTE_ADDR'. 
I: Remote address found, connecting to ::1:9000. 
W: Creating socket for '::1:9000', poll success, but error: Operation now in progress (19). 
E: Could not connect to client. :-(
Log closed at 2017-01-03 14:06:36 

При использовании VS код, нет никакой ошибки и Xdebug показывает вместо I: Connected to client. :-)

+0

Пожалуйста, поделитесь своими настройками PhpStorm. Прямо сейчас, возможно, вы создали запись «debug server» в PhpStorm только для IP-адреса - проверьте ее на «Настройки/Настройки» | Языки и рамки | PHP | Servers'. если все в порядке - соберите связанные с xdebug журналы (с обеих сторон IDE и xdebug). – LazyOne

+0

* (для справочных целей) * То же самое на форумах PhpStorm - https://intellij-support.jetbrains.com/hc/en-us/community/posts/115000010444-PHPStorm-Xdebug-hits-a-breakpoint-only -when-using-external-IP-address – LazyOne

+0

Благодаря @LazyOne я попытался изменить настройки сервера, хотя они создаются автоматически, когда PHPStorm обнаруживает соединение (при подключении через внешний IP-адрес). – Ofiris

ответ

5

Установка xdebug.remote_connect_back в 0 (значение по умолчанию) решена вопрос.

Xdebug documentation:

Если включена, то параметр xdebug.remote_host игнорируется и Xdebug будет пытаться подключиться к клиенту, сделавшему запрос HTTP. Он проверяет переменные $ _SERVER ['HTTP_X_FORWARDED_FOR'] и $ _SERVER ['REMOTE_ADDR'] , чтобы узнать, какой IP-адрес использовать.

Когда Xdebug пытался подключиться к localhost, он использовал TCPv6, который PhpStorm не поддерживает. Изменение remote_connect_back на 0 заставило Xdebug использовать значение remote_host, используя TCPv4, поддерживаемый PhpStorm.