Netbeans показывает "Ожидание подключения (netbeans-xdebug)"

нужна помощь для настройки xdebug, для отладки проектов из сетей NetBeans.

Это функции моих компонентов:

XAMPP 1.8.2

PHP: 5.4.16

netbeans: 7.3.1

Apache: 2.4.4 (Win32)

это последняя часть моего файла php.ini:

 [XDebug]
 zend_extension = "C:\xampp\php\ext\php_xdebug-2.2.3-5.4-vc9-nts.dll"
 ;xdebug.profiler_append = 0
 ;xdebug.profiler_enable = 1
 ;xdebug.profiler_enable_trigger = 0
 xdebug.profiler_output_dir = "C:\xampp\tmp"
 ;xdebug.profiler_output_name = "cachegrind.out.%t-%s"
 xdebug.remote_enable = 1
 xdebug.remote_handler = "dbgp"
 xdebug.remote_host = "127.0.0.1"
 ;xdebug.trace_output_dir = "C:\xampp\tmp"

когда я запускаю phpinfo(), не установлен xdebug, и когда я отлаживаю проект из netbeans, он говорит "Ожидание подключения (netbeans-xdebug)".

может кто-нибудь помочь мне настроить его? будет очень признателен.

заблаговременно.

Ответ 1

Вы исправили проблему? Если нет, попробуйте это.

1) Содержимое файла php.ini

zend_extension = "c:\xampp\php\ext\php_xdebug-2.2.3-5.4-vc9.dll"
xdebug.remote_autostart=on
xdebug.remote_enable=on
xdebug.remote_enable=1
xdebug.remote_handler="dbgp"
;xdebug.remote_host="localhost:81"
xdebug.remote_host=192.168.1.5
;xdebug.remote_connect_back=1
xdebug.remote_port=9000
xdebug.remote_mode=req
xdebug.idekey="netbeans-xdebug"

xdebug.remote_host=192.168.1.5 - Это IPv4-адрес моей системы, я изменился на это, потому что я не мог отлаживать с localhost и 127.0.0.1.

в среде IDE NetBeans, откройте Tools- > Options- > PHP- > Debugging. Значения порта отладчика и идентификатора сеанса должны совпадать с портом и idekey, указанными в php.ini

Теперь сохраните php.ini, перезапустите Apache и теперь попробуйте отладить

Спасибо Johnson

Ответ 2

Когда Netbeans запускает сеанс отладки, он запускает два Listeners, один на 0.0.0.0:9000 (все IPv4-IP-системы, которые есть в системе), а другой - на интерфейсе IPv6.

Если Netbeans и веб-сервер находятся в одной системе, в идеале XDebug будет настроен на отправку данных обратно в 127.0.0.1:9000, на которых NetBeans будет прослушивать (и только за сеанс)...

xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
xdebug.remote_autostart=0
xdebug.remote_connect_back=0

Если по какой-либо причине XDebug не сможет отчитываться до 127.0.0.1, или Netbeans не прослушивает 127.0.0.1, вы можете настроить XDebug на отправку данных обратно в $_SERVER['REMOTE_ADDR'] исходного запроса...

xdebug.remote_connect_back=1

Таким образом, вам не нужно указывать точный IP (то есть, как в приведенном выше ответе LAN LAN: 192.168.1.5). Недостатком здесь является то, что любой источник может подключиться.

Если у вас есть дополнительные проблемы, это...

xdebug.remote_autostart=1

... также запустит процесс отладки для всех запросов, а не только для тех, у кого есть правильный запрос на запуск сеанса или файл cookie. Недостатком здесь является то, что все запросы будут инициировать сбор данных отладки и отчетность (делая все медленнее и генерируя больше данных).

Хотя из того, что я собрал, большинство из этих проблем "Ожидание подключения (netbeans-xdebug)" в Windows (с XAMPP, Wamp-Server и т.д.) обычно являются результатом брандмауэра Windows и McAfee (или другого брандмауэр и антивирусное программное обеспечение), блокируя соединение...

Источник: Netbeans "Ожидание подключения (netbeans-xdebug)" Проблема

Ответ 3

Я программист .Net и очень новичок в PHP. Недавно я пытался разместить PHP-приложение с открытым исходным кодом на своей машине (Windows). После битвы в течение 5-6 дней я расскажу о шагах, которые сработали для меня.

Я удалил все предыдущие установки XAMPP и NetBeans и приступил к новым установкам.

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

  • установить XAMPP

  • установить netbeans для PHP.

  • Откройте IIS и остановите его. Он работает по порту 80 по умолчанию (я запускаю XAMPP на порту 80, то есть по умолчанию, для работы на другом порту могут потребоваться дополнительные настройки конфигурации)

  • Откройте панель управления XAMPP и запустите Apache. Если порт 80 свободен, проблема не возникает.

  • Открыть локальный хост в браузере должен отображать домашнюю страницу XAMPP.

  • откройте ссылку phpinfo() на левой панели и скопируйте все содержимое на странице. Перейдите к: http://xdebug.org/wizard.php и вставьте весь контент в TextBox и нажмите "Анализировать мой вывод phpinfo". Он будет докупить вам файл Xdebug, подходящий для вашей конфигурации.

  • Загрузите данную DLL Xdebug и скопируйте ее в C:\xampp\php\ext (Xampp является каталогом установки Xampp по умолчанию)

  • Откройте панель управления XAMPP, нажмите кнопку Config перед Apache и выберите php.in,

  • Найдите строку, похожую или подобную,

; zend_extension = "C:\xampp\php\ext\php_xdebug.dll"

(точка с запятой означает, что она прокомментирована)

Удалите точку с запятой и замените путь на путь, который вы только что скопировали:

zend_extension = "C:\xampp\php\ext\php_xdebug-2.3.2-5.4-vc9.dll"
  1. Аналогично найти строки

    ; xdebug.remote_enable = 0 ; xdebug.remote_handler = "dbgp"

удалите точки с запятой перед обеими линиями и сделайте remote_enable = 1

xdebug.remote_enable = 1
xdebug.remote_handler = "dbgp"
  1. Перезапустите сервер Apache.

  2. Скопируйте код своего сайта в C:/XAMPP/htdocs/(your_website)/ это означает, что ваш index.php должен быть в C:/XAMPP/htdocs/(your_website)/index.php

  3. Открыть Netbeans выберите Новый проект → PHP → Проект PHP из существующего источника и выберите папку, которую вы только что скопировали в папку htdocs. Установите его для запуска на локальном веб-сервере.

  4. Задайте точку останова в первой строке index.php и отлаживайте.

Что это.

Дополнительные настройки были предложены на разных постах, но вышеприведенные этапы работали отлично для меня.

Ответ 4

Я просто часами прочитывал так много ответов на этой странице, а другим нравилось, и никто не упоминал, что в итоге оказалось для меня решением:

Убедитесь, что выбранные настройки порта совпадают во всех трех местах

Моя проблема заключалась в том, что есть три места, которые должен соответствовать выбранному порту. Два из моих сказали 9001 и один сказал 9000. Я изменил их все до 9000.

В этом была проблема, и почему Netbeans будет говорить только "Ожидание соединения (netbeans-xdebug)".

Расположение настроек 3 порта:

  • php.ini (xdebug.remote_port=9000)
  • свойства проектa > Запустить конфигурацию > Дополнительно
  • Netbeans > Инструменты > Параметры > PHP > Отладка

Ответ 5

В моем случае журнал Apache показал предупреждение PHP о том, что не задано date.timezone. Xdebug/netbeans начали работать, как только я установил его в php.ini и перезапустил apache.

date.timezone = America/Los_Angeles

Это PHP 5.5.

Ответ 6

Проверьте также настройки брандмауэра "окна".

Для меня это не сработало, потому что моя сеть LAN была объявлена ​​как "Общественная сеть". После того, как я переключил его на "Рабочую сеть", он работал нормально.

Ответ 7

Я нахожусь в Windows с xampp и изменил раздел [XDebug] моего php.ini(внизу) на следующее, чтобы заставить его работать:

zend_extension = "C:\xampp\php\ext\php_xdebug.dll"
xdebug.remote_enable=on
xdebug.remote_handler=dbgp
xdebug.remote_host=localhost
xdebug.remote_port=9000

Получается из wiki Netbeans здесь: http://wiki.netbeans.org/HowToConfigureXDebug

Если у вас запущен Apache, не забудьте перезапустить его после настройки XDebug и сохранения php.ini.

Ответ 8

Добавление этого делало для меня работу:

xdebug.idekey=netbeans-xdebug   

Ответ 9

В моем случае, если я добавлю следующее в php ini, это не сработало

zend_extension_ts = "C:\PHP\PHP560\вн\php_xdebug-2.4.0rc4-5.6-vc11.dll"

Но если я добавлю

zend_extension = "C:\PHP\PHP560\вн\php_xdebug-2.4.0rc4-5.6-vc11.dll"

Он отлично работает.

Ответ 10

Я хочу упомянуть что-то здесь о xdebug.remote_host

xdebug.remote_host="127.0.0.1"

Недействительно. Он может работать в некоторых случаях, но котировки также могут вызывать проблемы. У большинства людей нет проблем при использовании IP-адресов в кавычках, но это создает плохой прецедент. Это заставляет людей думать, что если вы хотите использовать имя хоста или URL-адрес, вам нужно поместить его в кавычки. Это неверно, ссылки в кавычках не будут работать.

Если вы хотите отлаживать использование URL-адреса, вы можете сделать это, просто поместив URL-адрес после таких значений:

xdebug.remote_host=subdomain.mydomain.com

Я также хочу упомянуть, что если у вас есть номер порта, не добавляйте его. Это не работает:

xdebug.remote_host=subdomain.mydomain.com:9000

Это то, что вы хотите сделать:

xdebug.remote_host=subdomain.mydomain.com
xdebug.remote_port=9000

Если вы это сделаете, я также предостерег вас, что remote_connect_back отключен. Вот так:

xdebug.remote_connect_back=0

или вы можете полностью исключить его, например:

;xdebug.remote_connect_back=1

Если remote_connect_back включен, он попытается вытащить ваш IP-адрес из входящего соединения и проигнорировать настройки remote_host и порта.

Xdebug использует простой старый TCP для соединения. Это не HTTP. Это означает, что такие инструменты, как Fiddler, не будут отображать пакеты или информацию об отладке. Если вам нужно отлаживать и посмотреть, идет ли сервер к вашей IDE, вы можете несколько способов проверить его.

Wireshark позволит вам видеть трафик TCP. Также, если вы находитесь в Windows, Microsoft Message Analyzer также может контролировать TCP.

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

Это отличная бесплатная java-программа для запуска TCP-сервера: http://sockettest.sourceforge.net/

Как запустить TCP-сервер

В разделе IP-адрес просто введите 127.0.0.1 или оставьте его в 0.0.0.0. Затем укажите номер порта, который обычно по умолчанию равен 9000 для xdebug.

Как только TCP-сервер будет запущен, откройте удаленную веб-страницу с помощью xdebug_break(); вызов функции в нем. Это скажет xdebug на удаленном сервере, чтобы начать отладку на любом сервере и порту, указанном в вашем php.ini.

Следите за сервером сокета и посмотрите, есть ли у вас соединение. Первые отправленные данные должны выглядеть примерно так:

<init appid="APPID"
      idekey="IDE_KEY"
      session="DBGP_COOKIE"
      thread="THREAD_ID"
      parent="PARENT_APPID"
      language="LANGUAGE_NAME"
      protocol_version="1.0"
      fileuri="file://path/to/file">

Если вы сделали это так далеко, удаленная отладка работает! Просто остановите сервер и настройте свою среду IDE для прослушивания на этом порту!


Если вы похожи на большинство из нас, ваша машина для разработчиков находится за маршрутизатором с NAT. Это означает, что все в вашем офисе имеют одинаковый IP-адрес. Это проблема, потому что когда xdebug связывается с этим IP-адресом для начала отладки, он попадает на маршрутизатор, а не на ваш компьютер. Маршрутизатор может быть настроен для передачи определенных номеров портов на отдельные компьютеры, но вы можете не захотеть этого делать, поскольку этот порт будет открыт до тех пор, пока вы не измените настройки своего маршрутизатора.

Другой вариант - использовать SSH. Есть отличный пример, как это сделать здесь: http://stuporglue.org/setting-up-xdebug-with-netbeans-on-windows-with-a-remote-apache-server/#attachment_1305

Мой предпочтительный вариант - использовать Ngrok. Ngrok - отличный инструмент для перенаправления трафика http, https и TCP. Чтобы использовать функцию перенаправления TCP, вам необходимо зарегистрироваться для бесплатной учетной записи.

Как только вы зарегистрировались в учетной записи и добавили свой ключ API на свой компьютер, запустите эту команду на компьютере, на котором установлена ​​ваша среда ID:

ngrok tcp 9000

Это откроет туннель tcp (не http) с сервера ngrok на любой компьютер, на котором вы запускали команду. Я использую порт 9000, вы можете изменить этот порт, если ваша IDE настроена для другого порта Xdebug.

Это то, что вы должны увидеть:

Ngrok tcp tunnel open

Вам нужно будет увидеть, что URL-адрес туннеля TCP был открыт. В этом примере это:

0.tcp.ngrok.io:14904

Для этого сеанса параметр Xdebug на вашем сервере должен быть следующим:

xdebug.remote_host=0.tcp.ngrok.io
xdebug.remote_port=14904

URL и порт будут меняться каждый раз при запуске ngrok. Если вы хотите иметь одинаковый URL-адрес и порт, вам необходимо перейти на платный аккаунт. Обязательно перезапустите apache после внесения изменений в ваш php.ini.

Ответ 11

Правильно настроив файл php.ini, netbeans, переадресацию портов на маршрутизаторе, я все еще получал жалкое "ожидание соединения (netbeans-xdebug). В конце концов я заметил на странице netbeans" Не забудьте установить output_buffering = Off в вашем файле php.ini ".

Итак, я проверил файл /etc/php/ 7.x/apache2/php.ini и, конечно же, его значение было 4096. Итак, я reset output_buffering = Off и сработает!!!

Надеюсь, это поможет кому-то, поскольку сообщение подразумевает, что это ошибка соединения, а не ошибка конфигурации.

Ответ 12

проверьте это: Запустите XDebug в Netbeans по внешнему запросу


Другой способ - открыть новое окно:

попробуйте перейти к Project > run configuration > advance

и переключитесь на значение по умолчанию, проверьте, откроет ли он другое окно в браузере

Ответ 13

Попробуйте запустить php -i в окне команд. При перенаправлении вывода ошибка была

Для меня это было окончательное решение, потому что у меня была неправильная версия Xdebug, загружаемая

Для меня это должно было быть: php_xdebug-2.1.2-5.3-vc6.dll

Но у меня было: php_xdebug-2.2.4-5.3-vc9.dll. Таким образом, произошла ошибка из php -i

E:\Programme\php>php -i > myOutputFromPhp

выводится следующая ERROR

Невозможно загрузить Xdebug - он был построен с конфигурацией API220090626, TS, VC9, тогда как работает двигатель API220090626, TS, VC6

Ответ 14

У меня была та же проблема. Зачем? Сначала я установил WAMP, благодаря Netbeans, и они работают вместе как шарм. Позже я установил сайты XAMPP и Localhost, которые были выполнены гладко, но NetBeans никогда не мог подключиться к XAMPP (netbeans-xdebug). В то же время NetBeans работали хорошо с Wamp.

Мое решение состояло в том, чтобы вернуться к Вампу. Это лучше, чем ничего.

Мой компьютер: Win-7-32, NetBeans-8.0.2,

wampserver2.5-Apache-2.4.9-Mysql-5.6.17-php5.5.12-32b

XAMPP-win32-5.6.8-0-VC11

Ответ 15

Для пользователей Ubuntu:

  • sudo su
  • apt-get install php5-dev php-pear
  • pecl install xdebug
  • find/-name 'xdebug.so' 2 > /dev/null
  • он вернет что-то вроде:/usr/lib/php5/20121212/xdebug.so
  • vi/etc/php5/apache2/php.ini
  • добавьте эту строку: zend_extension = "/usr/lib/php5/20121212/xdebug.so"
  • служба apache2 restart
  • перезагрузка IDE

Ответ 16

Я потратил много времени, пытаясь получить оптимальную настройку, и это заслуживает собственного ответа, хотя @Johnson T A он почти прав.

Он говорит

xdebug.remote_host = 192.168.1.5 - Это IPv4-адрес моей системы, я изменился на это, потому что я не мог отлаживать с localhost и 127.0.0.1.

Ну, не каждый может использовать частный адрес, или он может быть динамическим или другими. Кроме того, в моем случае у меня было тяжелое время очень долгое время ожидания до начала отладки фактически началось - 30 с или так каждый раз. Это было непрактично.

Я уверен, что все, у кого есть эти проблемы, по крайней мере на Windows 7 или так. Проблема связана с сочетанием разрешения имен и xdebug. Чтобы преодолеть их, убедитесь, что:

  • Порт 9000 не используется. Если это произойдет, замените его на неиспользуемый, как в php.ini, так и в netbeans.
  • Убедитесь, что xdebug.remote_enable on.
  • Если вы хотите иметь возможность отладки с использованием адресов localhost и 127.0.0.1, откройте \Windows\System32\drivers\etc и убедитесь, что у вас есть следующие строки:

    127.0.0.1 localhost

    :: 1 localhost

Убедитесь, что первая строка не имеет # перед ней, а вторая имеет ее.

Мой рабочий раздел php.ini(мне не нужен профайлер, поэтому я его отключил):

[XDebug]
zend_extension = "C:\xampp\php\ext\php_xdebug.dll"
xdebug.profiler_append = 0
xdebug.profiler_enable = 0
xdebug.remote_enable = on
xdebug.remote_handler = "dbgp"
xdebug.remote_host = "localhost"
xdebug.remote_port = 9001
xdebug.trace_output_dir = "C:\xampp\tmp"
xdebug.remote_log = "C:\xampp\tmp\xdebug\xdebug.log"
xdebug.idekey = "netbeans-xdebug"
xdebug.remote_autostart = on
xdebug.remote_connect_back = on

Отключить отладчик netbeans. Перезапустите Apache.

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

Объяснение: Хотя в etc/hosts они говорят, что "разрешение имени локального хоста обрабатывается в самом DNS", по какой-либо причине это не очень хорошо работает с xdebug, если у вас его явно не указано в этом файле. Явно полагаю, что это не повредит в целом, и решает эту проблему с помощью xdebug. Но также вам нужно явно отключить короткую нотацию sIPv6 для localhost (:: 1), чтобы все это работало. Не знаю внутренних причин, но triead все комбинации, и это работает для меня как шарм.

Ответ 17

У меня была эта проблема для одного проекта, но не для других. Итак, xdebug был правильно настроен, настройки проекта были в порядке, но он все равно не работал.

Итак, я просто удалил подкаталог nbproject, содержащий настройки проекта, и создал новый проект с существующим источником. Это решило проблему для меня.

Ответ 18

Выберите специальный браузер для отладки:

  • Щелкните правой кнопкой мыши по проекту → выберите Свойства
  • Выберите категории: Браузер затем выбрал конкретный браузер для отладки