netbeans показывает " ожидание соединения (netbeans-xdebug)"

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

вот особенности моих компонентов:

XAMPP 1.8.2

PHP: 5.4.16

netbeans: 7.3.1

Apache: 2.4.4 (Win32)

Это заключительная часть моего PHP.ini-файл:

 [XDebug]
 zend_extension = "C:xamppphpextphp_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:xampptmp"
 ;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:xampptmp"

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

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

спасибо заранее.

21 ответов


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

1.) контент

[xDebug]
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 и попробуйте отлаживать.

Спасибо Джонсон


когда Netbeans запускает сеанс отладки, он запускает два прослушивателя, один на 0.0.0.0:9000 (все IPv4 IPs система имеет), а другой на интерфейсе 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 не слушает on 127.0.0.1, вы можете настроить XDebug для отправки данных обратно в $_SERVER['REMOTE_ADDR'] запрос...

xdebug.remote_connect_back=1

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

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

xdebug.remote_autostart=1

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

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

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


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

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

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

  1. установить Программе XAMPP

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

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

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

  5. открыть localhost в браузере В должен отображать XAMPP home страница.

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

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

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

  9. найти строку, похожую или точно похожую,

;zend_extension = "C:\xampp\php\ext\php_xdebug.DLL-файл"

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

удалите точку с запятой и замените путь путем 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 project из существующего источника и выберите папка, которую вы только что скопировали в папку htdocs. Установите его для запуска на локальном веб-сервере.

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


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

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

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

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

3 местоположения настройки порта:

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

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

xdebug.remote_host="127.0.0.1"

недопустимо. В некоторых случаях это может сработать, но кавычки также могут вызвать проблемы. У большинства людей нет проблем при использовании IP-адресов в кавычках, но это создает плохой прецедент. Это заставляет людей думать, что если вы хотите использовать имя хоста или URL нужно поставить его в кавычки. Это неверно, 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

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

;xdebug.remote_connect_back=1

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

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

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

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

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

How to start a TCP Server

в разделе 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 на компьютер выполните следующую команду на компьютере, на котором находится IDE:

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 после внесения изменений в РНР.ini.


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

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


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

date.timezone = America/Los_Angeles

это PHP 5.5.


Я на 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

источник из Вики Netbeans здесь:http://wiki.netbeans.org/HowToConfigureXDebug

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


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

xdebug.idekey=netbeans-xdebug   

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

zend_extension_ts="C:\PHP\PHP560\ext\php_xdebug-2.4.0rc4-5.6-vc11 - ... DLL-файл"

но если я добавить

zend_extension="C:\PHP\PHP560\ext\php_xdebug-2.4.0rc4-5.6-vc11 - ... DLL-файл"

Он работает нормально.


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

поэтому я проверил /etc/php / 7.х/apache2 не/РНР.ini и конечно это значение 4096. Поэтому я сбросил output_buffering=Off и lo это сработало !!!

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


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


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

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

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


попытка может быть, чтобы начать 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

дает следующую ошибку

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


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

моим решением было вернуться к 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


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

  1. судо Су
  2. apt-get install php5-dev php-pear
  3. pecl установить xdebug
  4. найти / - имя ' xdebug.Итак, ' 2>/dev / null
  5. он будет возвращать что-то вроде: в /usr/lib в/в php5/20121212/отладчика xdebug.так
  6. ви /и т. д./и php5/apache2 не/РНР.ini
  7. добавьте следующую строку: zend_extension="/usr и/lib в/в php5/20121212/отладчика xdebug.так что"
  8. перезапуск службы apache2
  9. перезапустить IDE

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

он говорит:

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

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

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

  • порт 9000 не используется. Если это так, измените его на неиспользуемый, как в php.ini и in среда NetBeans.
  • убедитесь в том, что xdebug.remote_enableis 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 они говорят ,что" разрешение имен localhost обрабатывается в самом DNS", по какой-либо причине оно не работает хорошо с xdebug, если у вас нет его явно указано в этом файле. Явно ставя его, кажется, не наносит никакого вреда в целом и решает эта проблема с xdebug. Но также вам нужно явно отключить короткую нотацию sIPv6 для localhost (:: 1), чтобы все это работало. Не знаю внутренних причин, но triead все комбинации, и это работает для меня как шарм.


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

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


выберите конкретный браузер для отладки:

  1. щелкните правой кнопкой мыши на project - > select Properties
  2. выберите категории: браузер затем выберите конкретный браузер для отладки

если ваш xdebug работает неправильно, проверьте журнал сервера:

$ sudo less /var/log/httpd/error_log

для проверки соединений используйте следующую команду:

$ sudo netstat -an

после запуска отладки на netbeans, если вы используете команду netstat, вы можете увидеть порт xdebug (возможно, это 80):

tcp6       0      0 192.168.33.10:80       192.168.33.2:49901      ESTABLISHED

порт netbeans - 9000:

tcp        0      0 192.168.33.10:52024    192.168.33.2:9000       ESTABLISHED

вы можете изменить порт xdebug отсюда (из верхнего меню, Инструменты - > Параметры - > РНР): enter image description here

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


после внесения изменений в PHP.ini или xdebug.ini-файлы, независимо от того, как вы используете веб-сервер, обязательно перезапустите этот веб-сервер (например:перезапуск службы httpd на CentOS) или Apache не будет принимать изменения, которые вы внесли в это .ini-файл.

пакет xdebug на CentOS - это "phpXXu-pecl-xdebug".

значения по умолчанию для последних Xdebugs обычно прекрасны. Это только строго необходимо, чтобы получить эти два значения правильно, где-то в Апаче .ini-файл:

xdebug.remote_enable=on
xdebug.remote_host=[DNS entry that resolves to the IP4 of your debugger]

У меня была та же проблема и я пытался решить ее в течение нескольких часов. Я, наконец, узнал, что расширение chrome ipflood который изменяет заголовки, чтобы сделать его похожим на использование прокси-сервера, был причиной.

Он отлично работает после того, как я отключил его!