it-swarm.com.ru

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

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

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

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)».

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

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

65
pasluc74669

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

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

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

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

111
Johnson T A

Когда Netbeans запускает сеанс отладки, он запускает два прослушивателя, один на 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-адрес (то есть, как указано выше, ответьте на IP-адрес локальной сети: 192.168.1.5). Недостатком здесь является то, что любой источник может подключиться.

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

xdebug.remote_autostart=1

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

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

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

10
rightstuff

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

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

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

  1. установить XAMPP 

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

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

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

  5. Откройте localhost в браузере, должна отобразиться домашняя страница XAMPP.

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

  7. Загрузите указанную библиотеку 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 и выполните отладку.

Вот и все.

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

5
Jitendra Sawant

Я хочу упомянуть кое-что здесь о 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.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 после внесения изменений в ваш php.ini.

4
Beachhouse

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

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

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

Это была проблема, и поэтому Netbeans сказал бы только «Ожидание соединения (netbeans-xdebug)».

3 настройки порта: 

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

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

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

2
Tim Stollberg

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

xdebug.idekey=netbeans-xdebug   
1
John Sarris

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

date.timezone = America/Los_Angeles

Это PHP 5.5.

1
user2701551

В моем случае, если я добавлю следующее в 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"

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

1
nikunj gandhi

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

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

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

1
shires-boy

Я нахожусь на 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.

1
Richard Lovell

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

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

0
johanv

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

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

0
Black

После внесения изменений в файлы php.ini или xdebug.ini, независимо от того, как работает ваш веб-сервер, обязательно перезапустите этот веб-сервер (например: service httpd restart on CentOS), иначе Apache выполнит не принимать изменения, которые вы внесли в этот файл .ini.

Пакет xdebug в CentOS называется "phpXXu-pecl-xdebug".

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

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

Я потратил много времени, пытаясь настроить оптимальную настройку, и это заслуживает своего собственного ответа, хотя @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_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 написано, что «разрешение имен локальных хостов обрабатывается внутри самого DNS», по любой причине оно не работает с xdebug, если вы не указали это явно в этом файле. Явное выражение в целом не причиняет вреда и решает эту проблему с помощью xdebug. Но также вам нужно явно отключить короткую запись sIPv6 для localhost (:: 1), чтобы все это работало. Не знаю внутренних причин, но разберись со всеми комбинациями, и это работает для меня как шарм.

0
Pere

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

  1. Щелкните правой кнопкой мыши на проекте -> выберите Свойства
  2. Выберите категории: Браузер, затем выберите определенный браузер для отладки.
0
Vinh

У меня была та же проблема . Почему? Сначала я установил 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

0
Yevgeniy Afanasyev

Если ваш 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 отсюда (в верхнем меню Сервис -> Параметры -> PHP):  enter image description here

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

0
lechat

Можно попробовать запустить 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

0
AlfredK

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


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

попробуйте зайти в проект> запустить конфигурацию> продвижение 

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

0
Julio Marins

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

  1. Судо су
  2. apt-get установить php5-dev php-pear
  3. pecl установить xdebug
  4. find/-name 'xdebug.so' 2>/dev/null
  5. он вернет что-то вроде: /usr/lib/php5/20121212/xdebug.so
  6. vi /etc/php5/Apache2/php.ini
  7. добавьте эту строку: zend_extension = "/ usr/lib/php5/20121212/xdebug.so"
  8. перезапуск службы Apache2
  9. перезапустите IDE
0
dtmiRRor