Хобрук: Ваш путь к мастерству в программировании

Удаленная отладка PHP: XDebug не может подключиться к клиенту JetBrains php Storm

Я бы хотел, чтобы удаленная отладка работала со следующей конфигурацией программного обеспечения:

Win 7 Pro 64-битный сервер WAMP 2.2 (32-битный), вкл. Apache 2.2.22, PHP 5.4.3, XDebug php_xdebug-2.2.1-5.4-vc9.dll JetBrains PHPStorm 4.0.3

1.) WAMP запущен и работает, мой сайт можно найти по адресу localhost / fox /

2.) У PHP Storm есть проект, в котором есть сопоставление между моими исходными файлами и псевдонимом apache localhost / fox.

2.) Я установил расширение php XDebug и добавил следующие строки в свой php.ini

[xdebug]
zend_extension="c:/wamp/bin/php/php5.4.3/zend_ext/php_xdebug-2.2.1-5.4-vc9.dll"
xdebug.remote_enable=On
xdebug.remote_host="localhost"
xdebug.remote_port=9000
xdebug.remote_connect_back=On
xdebug.remote_autostart=On
xdebug.profiler_enable=On
xdebug.profiler_enable_trigger=off
xdebug.profiler_output_name=cachegrind.out.%t.%p
xdebug.profiler_output_dir="c:/wamp/tmp"
xdebug.remote_log="C:/wamp/tmp/xdebug.log"
xdebug.remote_cookie_expire_time=6000

Это должно настроить удаленную отладку XDebug и адрес обратного вызова.

Я уже проверяю свою установку здесь: xdebug.org/wizard.php

3.) Я настроил phpstorm, сначала я добавил локальный сервер

а затем проверил мои настройки здесь

http://www.bilder-hochladen.net/files/jrn0-2-c81e-jpg-nb.html

(я пробовал 127.0.0.1/fox как адрес сервера, а вместо этого localhost)

Вот мои настройки отладки: http://www.bilder-hochladen.net/files/jrn0-1-c4ca-jpg.html

Теперь я перезапускаю свой apache, захожу в phpstorm, устанавливаю точку останова (она красная), нажимаю функцию

Run  -> Start listen to PHP Debug Connections

Телефонная трубка становится зеленой, что бы это ни значило, но для меня это положительный сигнал.

Когда я сейчас запускаю свой php-скрипт на локальном веб-сервере, ничего не происходит, программа проходит через точку останова и не останавливается.

В журнале Xdebuggers (C: /wamp/tmp/xdebug.log) я нахожу множество таких сообщений:

 I: Checking remote connect back address.
 I: Remote address found, connecting to ::1:9000.
 E: Could not connect to client. :-(
 Log closed at 2012-07-19 14:21:08

Где-то в Интернете я нашел подсказку, что брандмауэр Windows может блокировать связь, поэтому я полностью выключил его, но это не помогло.

Я также попытался подключиться через telnet к localhost: 9000 и получил ответ от phpstorm.

Есть ли у кого-нибудь идеи, где искать ошибку или что еще я мог бы попытаться заставить этот материал работать?

Заранее большое спасибо за вашу помощь, Майкл.

p.s. Извините, мне не разрешено размещать более двух ссылок, потому что я здесь новичок, поэтому нет гиперссылки на мастер xdebug.


  • Используйте TcpView, netstat, Process Explorer или аналогичный инструмент, чтобы убедиться, что PhpStorm прослушивает порт 9000. Затем попробуйте подключиться к нему с помощью telnet 127.0.0.1 9000. Если telnet работает, XDebug также должен работать. Если нет, то проблема в сети. 19.07.2012
  • Вы используете один из букмарклетов PHPStorm в своем браузере для активации отладчика (или его эквивалента)? 19.07.2012
  • Привет, CrazyCoder, я забыл упомянуть, что я пробовал использовать telnet, и он работал, phpstorm слушает. в любом случае спасибо. 19.07.2012
  • 1) У вас xdebug.remote_connect_back=On, поэтому этот параметр xdebug.remote_host="localhost" игнорируется. 2) Я предлагаю следовать этой статье - работает отлично каждый раз (сначала попробуйте на новом простом проекте): confluence.jetbrains.net/display/WI/ 20.07.2012
  • У PHP Storm есть проект, в котором есть соответствие между моими исходными файлами и псевдонимом apache localhost / fox - возможно проблема здесь. Что за маппинг? Где вы его предоставили (Настройки | PHP | Серверы? Или, может быть, Настройки | Развертывание? И т. Д.)? 20.07.2012
  • Здравствуйте, LazyOne, так что я получил работу в простом проекте. Я уже в пути, как только я выясню, в чем моя проблема в более крупном проекте, я дам себе ответ. Спасибо за вашу помощь. 20.07.2012
  • Хорошо, проблема заключалась в том, что файл cookie позволял xdebug-er подключаться неправильно. Другого объяснения нет. 20.07.2012
  • Я обнаружил очень неприятную небольшую проблему с PhpStorm и удаленной отладкой. Конечно, я разрабатываю для Linux, но я уверен, что в Windows есть те же проблемы. Если ваш исходный путь (в сопоставлениях) не является фактическим НАСТОЯЩИМ путем к вашему источнику, отладчик не остановится в точках останова. Это очевидно при использовании символических ссылок в Linux. Если ваши проекты хранятся в папке C: \ Users \ You \ xyz, вы можете попробовать переместить их в корневой каталог и посмотреть, поможет ли это. Только мои 0,02 доллара США. 21.07.2012
  • @lucifurious Пробовали ли вы настроить правильные сопоставления путей в Параметрах | PHP | Серверы ?? Прекрасно работает. 22.07.2012
  • Больше не работает. Я пробовал все, что вы мне предлагали, посмотрите мои карты здесь: ссылка Я немного в отчаянии, все переустановил, все настройки удалил, ничего не помогло. Мой друг использует точно такую ​​же настройку, и она все равно работает ... спасибо. 24.07.2012
  • @cimmx у вас есть непроверенные ответы 07.10.2014
  • Спасибо @CrazyCoder. Сделав telnet и увидев, что он завис, я зажег лампочку и выпустил брандмауэр Ubuntu. При этом был открыт порт: sudo ufw allow 9000 17.01.2017

Ответы:


1

Может, немного поздно, но ...

Здесь у вас есть противоречие с вашими настройками:

xdebug.remote_host="localhost"
xdebug.remote_connect_back=On

Эти две настройки пересекаются. В чем дело?

a) Вы хотите отлаживать свое приложение только из одного источника (например, вы разрабатываете и развертываете в localhost).

Итак, вы почти закончили: вы уже определили, что удаленным хостом является localhost. Закомментируйте строку remote_connect_back (с помощью ;)

б) Вы хотите принять несколько источников разработки (например, несколько машин, отлаживающих приложение в одной сети).

Затем строка remote_host переопределяется, поэтому вы можете удалить или прокомментировать ее.

Фактически, это та конфигурация, которую вы используете в данный момент. Итак, что с этим не так? Проверьте это, запустив этот скрипт:

<?
echo $_SERVER['REMOTE_ADDR'];

На выходе будет ::1. Ну, хост, который делает запрос к вашему серверу Apache, localhost. И Apache разрешает это имя как адрес IPv6 ::1, что, в конце концов, не является неправильным. Но Xdebug не может подключиться к IPv6-адресу. Видеть:

I: Remote address found, connecting to ::1:9000.
E: Could not connect to client. :-(

Таким образом, нашей целью будет заставить Apache разрешать localhost предпочтительно в адрес IPv4 (без отключения какой-либо поддержки IPv6 на уровне ОС и на уровне Apache). Этого можно добиться, добавив в ваш hosts файл следующую строку:

127.0.0.1 localhost

Этот простой прием поможет вам! Теперь localhost всегда будет предпочтительно разрешаться как адрес IPv4, в то время как ::1 будет по-прежнему совершенно понятным.

04.12.2013
  • большое спасибо. трюк с файлом hosts был для меня недостающим ключом;) 07.10.2014
  • Ах ты мой герой. Я провел последние два часа, просматривая все статьи в Интернете, и у всех был установлен параметр remote_connect_back. Спасибо за объяснение и спасение моего рассудка .. +1 08.12.2014
  • Рад, что это было полезно. Жаль, что ОП не установил ответ как истинный 08.12.2014
  • Спасибо ! Мой xdebug пытался подключиться к IPv6-адресу. Удалил строчку remote_connect_back и все заработало. 08.12.2016
  • Спасибо, хорошее объяснение. 27.11.2017

  • 2

    Вы можете попробовать отключить IPV6 http://support.microsoft.com/kb/929852, я думаю, что это проблема, когда пытаешься подключиться.

    Обнаружен удаленный адрес, подключение к :: 1: 9000.

    Система пытается подключиться к IPV6, и я думаю, что XDebug доступен только для IPV4.

    25.07.2012
  • Спасибо! Моя конфигурация виртуального хоста MAMP Pro автоматически добавляет записи localhost IPv6 (:: 1) в / etc / hosts. После их удаления xDebug снова заработал, как и ожидалось! 05.07.2017

  • 3

    Где именно в вашем коде находится точка останова? Я знаю, что XDebug может быть забавным.

    Для PHP 5.4 ваши настройки Xdebug должны быть

    [XDebug]
    zend_extension="<path to php_xdebug.dll>"
    xdebug.remote_enable=1
    xdebug.remote_port="<the port for XDebug to listen to>" (the default port is 9000)
    xdebug.profiler_enable=1
    xdebug.profiler_output_dir="<AMP home\tmp>"
    

    http://www.jetbrains.com/phpstorm/webhelp/configuring-xdebug.html

    10.03.2013
  • Что запрашивает xdebug.profiler_output_dir? Путь к каталогу tmp в системе? Я использую Ubuntu, поэтому его тоже нужно установить: / tmp? 03.12.2013
  • @johnsnails Каталог, в который будут записываться выходные данные профилировщика, убедитесь, что пользователь, под которым будет работать PHP, имеет права на запись в этот каталог. По умолчанию /tmp 03.12.2013
  • Новые материалы

    5 проектов на Python, которые нужно создать прямо сейчас!
    Добро пожаловать! Python — один из моих любимых языков программирования. Если вы новичок в этом языке, перейдите по ссылке ниже, чтобы узнать о нем больше:

    Dall-E 2: недавние исследования показывают недостатки в искусстве, созданном искусственным интеллектом
    DALL-E 2 — это всеобщее внимание в индустрии искусственного интеллекта. Люди в списке ожидания пытаются заполучить продукт. Что это означает для развития креативной индустрии? О применении ИИ в..

    «Очень простой» эволюционный подход к обучению с подкреплением
    В прошлом семестре я посетил лекцию по обучению с подкреплением (RL) в моем университете. Честно говоря, я присоединился к нему официально, но я редко ходил на лекции, потому что в целом я нахожу..

    Освоение информационного поиска: создание интеллектуальных поисковых систем (глава 1)
    Глава 1. Поиск по ключевым словам: основы информационного поиска Справочная глава: «Оценка моделей поиска информации: подробное руководство по показателям производительности » Глава 1: «Поиск..

    Фишинг — Упаковано и зашифровано
    Будучи старшим ИТ-специалистом в небольшой фирме, я могу делать много разных вещей. Одна из этих вещей: специалист по кибербезопасности. Мне нравится это делать, потому что в настоящее время я..

    ВЫ РЕГРЕСС ЭТО?
    Чтобы понять, когда использовать регрессионный анализ, мы должны сначала понять, что именно он делает. Вот простой ответ, который появляется, когда вы используете Google: Регрессионный..

    Не зря же это называют интеллектом
    Стек — C#, Oracle Опыт — 4 года Работа — Разведывательный корпус Мне пора служить Может быть, я немного приукрашиваю себя, но там, где я живу, есть обязательная военная служба на 3..