2015-09-21 2 views
2

Настройка: Windows 10; Докер работает с Boot2Docker на Hyper-V; PHPStorm 9Xdebug с PHPStorm и контейнером докера

Веб-сервер на виртуальной машине Nginx. Я настроил xdebug.ini php5-FPM, как:

zend_extension=xdebug.so 
xdebug.remote_enable=on 
xdebug.remote_port=9000 
xdebug.remote_connect_back=On 
xdebug.remote_handler=dbgp 
xdebug.profiler_enable=0 

Если установить контрольную точку и перезагрузите страницу я получаю входящее соединение с Xdebug в PhpStorm:

Incoming connection

I интересно, что показан только один файл, а не весь проект, который намного больше. Если я принимаю соединение я могу отладить самую первую строку, но это не останавливает на моей точке останова и создает запись сервера, который выглядит как:

Server Что очень странно, что хозяин пуст. Я уже добавил сервер с правильным отображением, но он проигнорировался.

Итак, как заставить Xdebug остановиться на контрольных точках?

+1

* «Что очень странно, что хост пуст». * Это неправильная настройка nginx - вам нужно настроить переменную/параметр servername (в файле конфигурации nginx) – LazyOne

+0

* «Интересно, что отображается только один файл, а не весь проект, который намного больше ». * Сценарий, выполняемый в настоящий момент, -' index.php', и этот диалог запрашивает сопоставления пути (чтобы среда IDE могла знать, какой ЛОКАЛЬНЫЙ файл соответствует этому удалённому). Зачем вам нужно видеть ВСЕ ДРУГИЕ файлы в этом диалоговом окне? Вы хотите еще больше смутить, пытаясь найти нужный файл в огромном списке? – LazyOne

+0

* "и создает запись сервера, которая выглядит следующим образом:" * Я предлагаю перемещать сопоставления 1 уровня выше - корневую папку карты ('C: \ Dev \ www \ projectname') в ваш'/var/wwww/projectname' - - прямо сейчас отображается только веб-сайт root. – LazyOne

ответ

5

Очень странно, что хост пуст.

PhpStorm требует этого поля должны быть заполнены, как он использует это, чтобы распознать, что сервер начального (и, следовательно, путь отображения) для использования - IDE поддерживает отладку тот же базовый код, работающий на разных доменах/удаленных серверах.

В этом конкретном случае поле/параметр servername вашей конфигурации nginx пуст. Вы можете исправить это, предоставив некоторое значение в файле конфигурации nginx.

+0

Спасибо за этот комментарий! Определение имени сервера, сделанного Xdebug, работает, а также используя мои точки останова. – JulienD