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 63

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 не слушает на 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 и вставьте все содержимое в текстовое поле и нажмите кнопку Анализ вывода phpinfo. Он будет отображать вам файл Xdebug, подходящий для вашей конфигурации.

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

  8. Гото Панель управления 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 проект из существующего источника и выберите папка, которую вы только что скопировали в папку 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

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

;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/

How to start a TCP Server

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

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

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

<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 вам нужно зарегистрироваться для a бесплатный аккаунт.

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

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

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

в моем случае журнал 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.Ини.

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

xdebug.idekey=netbeans-xdebug   

Я мой случай, если я добавлю следующее в 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.x / apache2 / php.ini и конечно это значение 4096. Поэтому я сбросил output_buffering=Off и lo это сработало !!!

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

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


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

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

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

попытка может быть, чтобы начать 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.so' 2> / dev / null
  5. он будет возвращать что-то вроде: в /usr/lib в/в php5/20121212/отладчика xdebug.так
  6. vi/etc/php5/apache2 / php.ini
  7. добавьте следующую строку: zend_extension="/usr и/lib в/в php5/20121212/отладчика xdebug.так что"
  8. перезапуск службы apache2
  9. перезапустить IDE

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

он говорит:

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

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

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

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

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

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

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

  1. Правой Кнопкой Мыши на проект -> выберите Свойства
  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 который изменяет заголовки, чтобы сделать его похожим на то, что вы используете прокси, был причиной.

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