2015-10-09 7 views
5

Мне удалось получить xdebug в сочетании с докером и phpstorm. Для HTTP требует ... IExdebug в phpstorm и docker

http://192.168.99.100:8081/?XDEBUG_SESSION_START=PHPSTORM

Но когда я пытаюсь запустить свои phpunit тестов, он не соединяется с PhpStorm

Я сделал правильное право отображения каталога в PhpStorm, а также запускал следующий на моем докере-экземпляре export XDEBUG_CONFIG="idekey=PHPSTORM"

Я также пробовал на моем докере: экспортировать PHP_IDE_CONFIG = 'serverName = web.docker'and именовал конфигурацию сервера на phpstorm web.docker. все еще работающий над http, но не CLI

Могу ли я заставить phpstorm и xdebug работать вместе для командной строки?

вот мой файл: /etc/php5/cli/conf.d/20-xdebug.ini

zend_extension=xdebug.so 
xdebug.remote_enable=1 
xdebug.idekey=PHPSTORM 
xdebug.remote_connect_back=1 
xdebug.remote_host=172.17.42.1 
dxdebug.remote_autostart=1 

При включении протоколирования, и играть с xdebug_remote_host IP адреса я получаю

W: Remote address not found, connecting to configured address/port: localhost:9000. :-| 
E: Could not connect to client. :-(
Log closed at 2015-10-13 12:20:39 

Log opened at 2015-10-13 12:22:58 
I: Checking remote connect back address. 
W: Remote address not found, connecting to configured address/port: 172.17.42.1:9000. :-| 
E: Could not connect to client. :-(
Log closed at 2015-10-13 12:22:58 

Log opened at 2015-10-13 12:23:58 
I: Checking remote connect back address. 
W: Remote address not found, connecting to configured address/port: 192.168.99.100:9000. :-| 
E: Could not connect to client. :-(
Log closed at 2015-10-13 12:23:58 

Solution (редактировать) Включив xdebug, я видел, что он успешно подключился к 192.168.99.1, так что это решило проблему

xdebug.remote_host=192.168.99.1 
+1

Для удаленного IDE отладки использует сервер/имя хоста, как уникальный идентификатор, чтобы решить отображения какой путь использовать ('PHP | Servers'). Для отладки CLI такая информация не предоставляется (некуда ее брать), поэтому вам нужно предоставить ее вручную (подобно тому, что вы делали с idekey) - 'serverName = ServerNameHere'. Кроме того - https://devnet.jetbrains.com/message/5534075#5534075 – LazyOne

+0

Я не понял 100% вашего намека, но в любом случае я попробовал на моем докере: 'export PHP_IDE_CONFIG = 'serverName = web.docker''и назвал конфигурацию сервера на phpstorm web.docker. все еще работающий над http, но не CLI – Confidence

+0

1) Вы можете прочитать о удаленном отладке CLI/this serverName param [здесь] (https://youtrack.jetbrains.com/issue/WI-7906) 2) Каков ваш 'PHP | Серверы выглядят как (скриншот, пожалуйста) 3) Перед отладкой PHPUnit .. попробуйте отладить простой скрипт (поместите его в корневой каталог проекта, как локальный, так и удаленный, конечно) - по крайней мере вы гарантируете, что он не работает отлаживать в целом, а не phpunit конкретный момент. 4) В каком протоколе xdebug говорится об этой неудачной попытке (убедитесь, что это ясно/имеет только данные этого запроса) – LazyOne

ответ

4

Две вещи приходят на ум прямо сейчас:

  1. ли xdebug.remote_host правильно установить? Для HTTP-ссылки вы указали адрес 192.168., для обратного пути это адрес 172.17.. Можете ли вы проверить ваш хост на этом IP-адресе?

  2. В вашем ини файле он читает:

    dxdebug.remote_autostart=1 
    

    Является ли это просто опечатка здесь, или в том, что на самом деле в файле конфигурации? Потому что он должен читать xdebug без «d» перед ним. Оно должно быть:

    xdebug.remote_autostart=1 
    

    Вы должны добавить только д при добавлении опции при выполнении сценария, как это:

    php -dxdebug.remote_autostart=1 script.php 
    

Если это еще не помогло, включить удаленный журнал, добавив что-то вроде этого в конфигурацию:

xdebug.remote_log = /var/log/xdebug_remote.log 

Возможно, это поможет найти проблему.

+0

1. да, я могу 'ping 172.17.42.1'. – Confidence

+0

в противном случае, пожалуйста, проверьте мою измененную тему. – Confidence

+0

спасибо Pampy, ваш намек с отключением журнала показал, что он подключается к следующему IP 'xdebug.remote_host = 192.168.99.1', поэтому, установив его, теперь все в порядке. – Confidence

1

То, что сработало для меня SSH туннель с этой конфигурацией xdebug.remote_connect_back = 0 xdebug.remote_host = 127.0.0.1

См: Xdebug with SSH tunnel on Docker for Mac

+0

Я не могу верить, но это была проблема в моем случае. Спасибо Юджину – manuelbcd

0

С Докер-17.06, вы можете получить доступ к службам, которые Mac внутри контейнера, через имя статического хоста: docker.for.mac.localhost

полный ответ здесь: https://stackoverflow.com/a/48495802/1241980