нужна помощь для настройки xdebug, для отладки проектов из NetBeans 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)».
может ли кто-нибудь помочь мне настроить его? будет очень признателен.
заранее спасибо.
Вы исправили проблему? Если нет, попробуйте это.
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. Значения порта отладчика и идентификатора сеанса должны совпадать с портом и идеей, указанными в php.ini
Теперь сохраните php.ini, перезапустите Apache и теперь попробуйте отладить
Спасибо, Джонсон
Когда 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 (или другого брандмауэра и анти- -virus) блокирует соединение …
Источник: Netbeans «Ожидание подключения (netbeans-xdebug)» Проблема
Я программист .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 является установочным каталогом C:\xampp\php\ext
по умолчанию)
Откройте панель управления XAMPP, нажмите кнопку Config перед Apache и выберите php.in
,
Найдите линию, похожую или подобную,
; 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"
Аналогично найти линии
; xdebug.remote_enable = 0; xdebug.remote_handler = "dbgp"
удалите точки с запятой перед обеими линиями и сделайте remote_enable = 1
xdebug.remote_enable = 1 xdebug.remote_handler = "dbgp"
Перезапустите сервер Apache.
Скопируйте код своего сайта под C:/XAMPP/htdocs/(your_website)/
что означает, что index.php
должен находиться на C:/XAMPP/htdocs/(your_website)/index.php
Откройте Netbeans, выберите новый проект -> PHP -> проект PHP из существующего источника и выберите папку, которую вы только что скопировали в папку htdocs. Установите его для запуска на локальном веб-сервере.
Установите точку останова на первой строке index.php
и отлаживайте.
Вот и все.
Дополнительные настройки были предложены на разных постах, но вышеописанные этапы работали отлично для меня.
Я просто часами читал так много ответов на этой странице, как и другие, и никто не упомянул, что в итоге оказалось для меня решением:
Моя проблема заключалась в том, что есть три места, которые должен соответствовать выбранному порту. Два из моих сказали 9001 и один сказали 9000. Я изменил их все до 9000.
В этом была проблема, и почему Netbeans будет говорить только «Ожидание подключения (netbeans-xdebug)».
3 расположения настроек порта:
php.ini
( xdebug.remote_port=9000
) В моем случае журнал Apache показал предупреждение PHP о том, что у меня нет даты date.timezone. Xdebug / netbeans начали работать, как только я установил его в php.ini и перезапустил apache.
date.timezone = America/Los_Angeles
Это PHP 5.5.
Проверьте также настройки брандмауэра «окна».
Для меня это не сработало, потому что моя сеть LAN была объявлена как «Общественная сеть». После того, как я переключил его на «Рабочую сеть», он работал нормально.
Я нахожусь в 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
Я молюсь, если я добавлю следующее в 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"
Он работает нормально.
Я хочу кое-что упомянуть здесь о 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/
В разделе 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.
Это то, что вы должны увидеть:
Вам нужно будет увидеть, что 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.
Правильно настроив файл php.ini, netbeans, переадресацию портов на маршрутизаторе, я все еще получал жалкое «ожидание соединения» (netbeans-xdebug). В конце концов я заметил на странице netbeans «Не забудьте установить output_buffering = Off в файле php.ini ".
Поэтому я проверил файл /etc/php/7.x/apache2/php.ini и, конечно же, его значение было 4096. Поэтому я сбросил output_buffering = Off и сработал!
Надеюсь, это поможет кому-то, поскольку сообщение подразумевает, что это ошибка соединения, а не ошибка конфигурации.
проверьте это: Запустите 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.
Моим решением было вернуться к Вампу. Это лучше, чем ничего.
Мой компьютер: 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:
Я потратил много времени, пытаясь получить оптимальную настройку, и это заслуживает собственного ответа, хотя @Johnson TA это почти правильно.
Он говорит
xdebug.remote_host = 192.168.1.5 – Это IPv4-адрес моей системы, я изменился на это, потому что не смог отладить с localhost и 127.0.0.1.
Ну, не каждый может использовать частный адрес, или он может быть динамичным или другими вещами. Кроме того, в моем случае я страдал от очень долгого ожидания до начала отладки, фактически начавшейся – 30 с или так каждый раз. Это было непрактично.
Я уверен, что у всех этих проблем есть хотя бы на Windows 7 или около того. Проблема связана с сочетанием разрешения имен и xdebug. Чтобы преодолеть их, убедитесь, что:
xdebug.remote_enable
. Если вы хотите иметь возможность отладки с использованием адресов localhost
и 127.0.0.1
, откройте \Windows\System32\drivers\etc
и убедитесь, что у вас есть следующие строки:
127.0.0.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 все комбинации, и это работает для меня, как шарм.
У меня была эта проблема для одного проекта, но не для других. Итак, xdebug был правильно настроен, параметры проекта были в порядке, но он все еще не работал.
Поэтому я просто удалил подкаталог nbproject, содержащий настройки проекта, и создал новый проект с существующим источником. Это решило проблему для меня.
Выберите конкретный браузер для отладки: