Проблемы при подключении Vagrant Xdebug к PhpStorm 2020.3

#vagrant #phpstorm #xdebug

#vagrant #PhpStorm именно #xdebug

Вопрос:

Я потратил больше дня, пытаясь заставить PhpStorm отлаживать сайт Drupal внутри виртуальной машины Vagrant, на которой работает Xdebug, и я чувствую, что я близок, но пока еще не совсем.

В настоящее время в PhpStorm при отладке у меня ошибка:

 Waiting for incoming connection with ide key 'PHPSTORM'
 

В журнале Xdebug в виртуальной машине (at /tmp/xdebug.log )

 [2094] I: Checking remote connect back address.
[2094] I: Checking header 'HTTP_X_FORWARDED_FOR'.
[2094] I: Checking header 'REMOTE_ADDR'.
[2094] I: Remote address found, connecting to 192.168.88.1:9000.
[2161] E: Time-out connecting to client (Waited: 200 ms). :-(
[2161] Log closed at 2020-12-15 04:25:32
 

Я попытался настроить отладку с нулевой конфигурацией, но безуспешно.

Для конфигурации отладки у меня есть удаленная отладка PHP, которая проверяется правильно, хотя по умолчанию всегда используется параметр «Локальный веб-сервер или общая папка», а не параметр «Удаленный веб-сервер».

Когда я запустил проект, я настроил его как параметр локального веб-сервера, и я беспокоюсь, что я не изменил правильные настройки, чтобы теперь сделать это удаленным веб-сервером. Тип подключения для развертывания теперь «Локальная или подключенная папка», но первоначально это было «На месте».

В разделе Языки и фреймворки -> PHP -> Серверы я настроил это на порт 80, используя Xdebug и без сопоставления путей. Я попытался изменить порт и т.д., но тогда он не проходит проверку, поэтому я уверен, что настройки сервера верны и что PhpStorm правильно взаимодействует с виртуальной машиной.

Я изменил /etc/php/7.4/cli/php.ini файл, но phpinfo() говорит, что конфигурация поступает из /etc/php/7.4/fpm/php.ini . Однако изменения, которые я внес в файл php.ini, активны. phpinfo () показывает:

 xdebug.idekey: PHPSTORM
xdebug.remote_host: 10.0.2.2
xdebug.remote_port: 9000
xdebug.remote_autostart: Off
xdebug.remote_connect_back: On
 

Теперь я действительно в растерянности относительно того, что делать дальше. Это невероятно неприятно, так что надеюсь, что кто-нибудь сможет пролить немного света.

РЕДАКТИРОВАТЬ — Согласно комментарию, вот скриншоты настройки:

Развертывание

Развертывание: Локальная или подключенная папка

Настройки PHP

Настройки PHP

Сведения о сервере

Настройка сервера

Настройки отладки

Настройки отладки

Проверка отладчика

Проверьте отладчик с удаленного сервера

Chrome с аддоном отладки

Запустите Chrome с запущенным аддоном отладки

Сообщение об ошибке

Сообщение об ошибке

Параметры конфигурации запуска

Параметры конфигурации запуска отладки

phpinfo ()

Запуск phpinfo с файлом конфигурации, показывающим, где необходимо отредактировать настройки xdebug.

Настройки Xdebug

Настройки Xdebug для phpinfo()


Некоторые тесты в соответствии с комментариями:

Тест Telnet

После входа в систему ‘vagrant SSH’ он показывает используемый IP-адрес (10.0.2.2). Локальный компьютер также имеет IP 10.1.1.150, являющийся тестом telnet для обеих этих работ.

конфигурация Xdebug

«Sudo nano» ini-файла Xdebug


ПРИМЕЧАНИЕ: Изменение удаленного подключения обратно на 0 исправило соединение:

 xdebug.remote_connect_back=0
 

А затем нужно было включить сопоставление путей в настройках сервера, и тогда все работало правильно.

Большое спасибо LazyOne за его полезные и подробные комментарии. 🙂

Комментарии:

1. 1) Пожалуйста, опубликуйте скриншоты со всеми вашими настройками (включая раздел phpinfo() вывода Xdebug, записанный так же, как вы пытаетесь отлаживать — будь то CLI или веб-страница). 2) Да, в Linux и Mac очень часто используются отдельные файлы php.ini для использования в CLI и веб-сервером, так что да — вам нужно отредактировать правильный файл php.ini.

2. 3) Какая у вас версия Xdebug? 4) Каков IP-адрес вашей хост-ОС , если смотреть изнутри виртуальной машины? Вот где должен подключаться Xdebug (поскольку именно Xdebug подключается к IDE, а НЕ наоборот). 5) xdebug.remote_connect_back: On — попробуйте установить его off и убедитесь, что у вас все правильно xdebug.remote_host (поскольку Xdebug v2 может не вернуться к значению remote_host при сбое автоматического определения IP-адреса. 6) Убедитесь, что PhpStorm прослушивает порт Xdebug, когда включен значок «дескриптор телефона» (используйте netstat или аналогичный для подтверждения) и разрешен в брандмауэре

3. 7) Если вы знаете правильный IP-адрес и уверены, что PhpStorm прослушивает — вы можете просто использовать telnet изнутри виртуальной машины и попытаться подключиться к IDE через порт Xdebug — если подключен, то IP, порт и брандмауэр, скорее всего, настроены правильно.

4. Большое вам спасибо, LazyOne! В итоге это был шаг 5. 🙂 Все ваши шаги были очень полезными (особенно подсказка telnet). Пожалуйста, укажите шаги в ответе, и я выделю его. Я сделал снимки экрана в соответствии с вашим шагом 1, поэтому обновлю сообщение, чтобы помочь другим с той же проблемой. Еще раз спасибо. 🙂

5. Пожалуйста, опубликуйте свое окончательное решение в качестве ответа (вы можете принять свои собственные ответы позже). Это поможет другим пользователям в аналогичной ситуации (потому что это сделает этот вопрос / ответ более заметным). Пункты, которые я сделал, — это всего лишь список того, что нужно проверить .. поскольку из этой небольшой информации трудно дать точный ответ (не зная ваших фактических деталей настройки и т. Д.); Поэтому мне нет смысла публиковать это как ответ самому.

Ответ №1:

1) Проверьте, есть ли отдельные файлы php.ini, используемые веб-сервером, — вам нужно отредактировать правильный файл php.ini.

Запустите phpinfo() и проверьте, есть ли ini-файл для Xdebug. В моем случае это было на /etc/php/7.4/fpm/conf.d/20-xdebug.ini

2) Какая у вас версия Xdebug?

Версии 2 и 3 Xdebug имеют немного разные параметры. В моем случае я запускал Xdebug 2.9.5

3) Каков IP-адрес вашей хост-ОС, если смотреть изнутри виртуальной машины? Вот где должен подключаться Xdebug (поскольку именно Xdebug подключается к IDE, а НЕ наоборот).

При первом входе в систему по SSH будет показан IP-адрес. Это то, каким должен быть IP для Xdebug. В моем примере это было 10.0.2.2

4) xdebug.remote_connect_back: Вкл. — попробуйте отключить его и убедитесь, что у вас правильный xdebug.remote_host (поскольку Xdebug v2 может не вернуться к значению remote_host при сбое автоматического определения IP.

Это исправило мое соединение!

 sudo nano /etc/php/7.4/fpm/conf.d/20-xdebug.ini
 

Затем измените:

 xdebug.remote_connect_back=1
 

Для:

 xdebug.remote_connect_back=0
 

Сохраните, а затем перезапустите сервер.

Проверьте соединение еще раз. После этого шага у меня было соединение между хостом и удаленным сервером, но мне также пришлось включить сопоставление путей в PhpStorm, чтобы заставить отладчик работать на 100%.

5) Убедитесь, что PhpStorm прослушивает порт Xdebug, когда включен значок «дескриптор телефона» (используйте netstat или аналогичный для подтверждения) и разрешен в брандмауэре.

6) Если вы знаете правильный IP-адрес и уверены, что PhpStorm прослушивает — вы можете просто использовать telnet изнутри виртуальной машины и попытаться подключиться к IDE через порт Xdebug — если подключен, то IP, порт и брандмауэр, скорее всего, настроены правильно.

Даже с сообщениями об ошибках проверка telnet работала. Таким образом, это указывало на проблему, связанную с настройкой Xdebug, а не с установлением связи между хостом и удаленным сервером.

Спасибо комментариям LazyOne за поиск ответа и за представление отличного рабочего процесса, помогающего выявить проблему.

Ответ №2:

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

В моем проекте используется устаревшая версия xdebug. (2.2.7)

Понижение версии до PhpStorm 2020.2.4 решило мою проблему. (Для понижения версии достаточно одного щелчка в панели инструментов jetbrains)

Комментарии:

1. Также смотрите youtrack.jetbrains.com/issue/WI-56500

Ответ №3:

Спасибо за ответы в этом вопросе. Мне потребовалось полдня, чтобы выяснить, что xdebug 2.2.7 с php5.3.10 не работает на Phpstorm 2020.3. Поэтому я понизил рейтинг до 2020.2.4, и он снова работает.