сессии в Eclipse отладчик xdebug не завершается
Я пытаюсь заставить xdebug работать с eclipse (3.5) / php (на XAMPP windows 7). Я проверил, что xdebug включен в php-у меня есть причудливый вывод, и мой phpinfo показывает все вещи xdebug. У меня есть удаленная отладка и набран ip-адрес локальной сети на моей машине eclipse.
когда я говорю eclipse для отладки, он запускает браузер и передает параметры URL отладки. Это выглядит нормально.
однако в перспективе отладки eclipse он показывает "запуск myproject" 57% ждет отладчика xdebug сессии. Он сидит там вечно.
Я отключил Брандмауэр windows на обеих машинах.
Я попытался включить неявный флеш.
какие идеи?
27 ответов:
убедитесь, что вы определили zend_extention с абсолютное путь в
php.ini
:например:
zend_extension=D:\SANDBOX\server\php\php_xdebug-2.1.0-5.3-vc6.dll
Я отлаживаю локальный проект в Windows. Пока мне это не нужно
xdebug.remote_enable = On
.предложения если сеанс Xdebug не запускается (зависает на 57 %), убедитесь, что:
zend_extention
директива устанавливается с абсолютным путем и отладка загружается, используйтеphpinfo()
проверить- брандмауэр не блокирует по умолчанию 9000 порт или затмение.
- другое приложение не использует порт (выполнить:
netstat -an |find /i "listening"
из командной строки)Если вам нужно настроить другой порт в
php.ini
:xdebug.remote_enable = on xdebug.remote_port = XXXX
и исправьте настройки Xdebug в Eclipse:
у меня была та же проблема, и я исправил ее, изменив порт на XDebug (теперь используя порт 9001).
вот мой php.содержимое ini строчку:
zend_extension ="C:\...\EasyPHP-5.3.3\php\ext\php_xdebug-2.dll" xdebug.remote_enable=1 xdebug.remote_host=localhost xdebug.remote_port=9001 xdebug.remote_handler=dbgp xdebug.profiler_enable=0 xdebug.remote_mode=req xdebug.remote_autostart=0
также проверьте файл журнала apache и убедитесь, что у вас нет следующего предупреждающего сообщения:
PHP предупреждение: Xdebug должен быть загружен как расширение Zend в Unknown on line 0
предупреждение: Xdebug должен быть загружен как расширение Zend в неизвестный on line 0Если вы это сделаете, откройте php.ini и комментарий ';' о
extension=php_xdebug-2.dll
строку:;extension=php_xmlrpc.dll extension=php_xsl.dll **;extension=php_xdebug-2.dll** ;/PHPExt
после борьбы в течение 3 часов и опробовать каждое решение на форумах, я узнал, что простой трюк состоял в том, чтобы удалить кавычки при указании путь к xdebug dll на zend_extension на php.ini. Я использую XAMPP (PHP 5.3.6 + Apache 2.2)+ Eclipse Indigo + PDT + Xdebug 2.1.2 на Windows Vista.
вот точная конфигурация, которая работает для меня -
zend_extension=C:\xampp\php\ext\php_xdebug-2.1.2-5.3-vc6.dll #Note that the path above is not in quotes xdebug.remote_enable=true xdebug.remote_host=localhost xdebug.remote_port=9001 xdebug.remote_handler=dbgp xdebug.profiler_enable=1 xdebug.profiler_output_dir=C:\xampp\tmp
я использовал порт 9001, так что это не столкновение с 9000 в случае, если это уже используется другой программой. Убедитесь, что это соответствует порту в Eclipse > настройки > PHP > Debug > Xdebug тоже. Кроме того, перезагрузите apache после редактирования php.Ини.
Как только я добавил Это в php.Ини, все работало, как мороженое.
У меня была такая же проблема с Zend Studio. Я заметил, что сеанс xdebug не начинался должным образом. Я передал эту строку в url-адрес один раз, и с тех пор она работала.
http://localhost/myalias/?XDEBUG_SESSION_START=ECLIPSE_DBGP&KEY=13750956767461
Я уверен, что это вопрос конфигурации где-то в IDE.
Я понял, что TCP-порт был в использовании и это было причиной, почему она висела. Я изменил порт в php.настройки ini и eclipse.
, проверьте эту ссылку:
есть один сеанс о новых плагинах для chrome и firefox, и они работают нормально.
проверьте правильность настроек веб-браузера Eclipse.
окно / Настройки / Общие / веб-браузер / внешние веб-браузеры / изменить настройки
в моем случае путь к внешнему двоичному файлу веб-браузера был неверным. Он сказал" /usr/bin/mozilla "вместо"/usr/bin/firefox". Не знаю, как эта настройка возникла, но после ее изменения окно браузера firefox появилось наконец.
Я заглянул в журнал apache и там было много строк с файлом не найдена ошибка.
выполнить -> конфигурации -> отладка веб-страницы -> в PHP Your_configuration
Я снял флажок
auto generate
и установите filename вindex.php
.похоже, что в случае какой-либо ошибки, которая мешает eclipse нормально функционировать, вызывает это "ожидание сеанса"
у меня была точно такая же проблема. Мои конфигурации были на одном уровне с вашими и в дополнение к тому, что
xdebug.remote_enable = On
на php.ini файл также добавляет следующее:xdebug.remote_connect_back=1
Это включает удаленную отладку multihost, в качестве альтернативы вы можете определить IP-адрес хоста.
xdebug.remote_host=IP_ADDRESS
да, проверьте статистику сети / порта. В моем случае я использую vmware fusion на mac, и процесс vmware-natd забивал процессор (блокируя открытый порт, который я предполагаю), который я не заметил. РНР.ini был полностью в порядке, пришлось запустить это, чтобы заставить его работать снова:
sudo "/Library/Application Support/VMware Fusion/boot.sh" --restart
Итак, ppl проверьте свой php.ini (или xdebug.ini-файл) в первую очередь. Если это выглядит нормально Ала эта дискуссия, затем проверьте, что у вас нет проблем с сетью.
Я не знаю, значит это для вас больше или нет! Но, вы попали в PHP файл(ничего.php) с параметром debug, что-то вроде
XDEBUG_SESSION_START=ECLIPSE_DBGP&KEY=12882809194391
.люди часто делают ошибки, чтобы попасть в HTML-файл с параметрами отладки, который заставляет Eclipse зависать в сеансе xdebug
У меня была аналогичная проблема, и оказалось, что я использовал неправильную dll. Надеюсь, что это поможет кому-то в будущем.
у меня был тот же симптом. Однако моя проблема заключалась в том, что я установил
xdebug.remote_host = ""
Я сделал это, потому что я использую виртуальные хосты apache, чтобы устранить необходимостьlocalhost
. Однако, мне пришлось изменить его обратноxdebug.remote_host = "localhost"
а затем измените мой apache / etc / hpppd-vhosts.conf, чтобы localhost указывал на мой корень c:\web.
для меня эти симптомы были вызваны брандмауэром windows (Win7 Pro). Мне нужно было явно разрешить eclipse пройти брандмауэр. Я сделал это через диалоговое окно "Панель управления\все элементы панели управления\Брандмауэр Windows\разрешенные программы".
Это может быть полезно не всем, но... при попытке отладки удаленных хостов всегда помните о маршрутизаторе DSL! (или любой маршрутизатор по пути) я потратил часы, пытаясь найти решение, когда я заметил, что все, что мне нужно было сделать, это активировать переадресацию портов (порт 9000) на моем Linksys, и все работало как шарм :)
- вышеуказанные материалы были полезны. Я проверил значения параметров xdebug в phpInfo () и обнаружил, что, несмотря на Мои настройки на 1 или On, auto_trace и remote_enable были выключены. Так что я добрался до правда. А потом пульт сработал!. Спасибо.
- Примечание, теперь вы можете запустить сеанс удаленной отладки из Eclipse, настроив различные конфигурации отладки или / и всякий раз, когда вы запускаете такое настроенное приложение вне Eclipse, вы получите вопрос в Eclipse принять или не принять сеанс отладки. Поэтому, если вы находитесь на другой машине, чем в пользовательском интерфейсе eclipse, вы можете обнаружить, что вызов вашего приложения истекает без причины. На самом деле было бы диалоговое окно да - нет, где бы ни находился сеанс Eclipse
этот поток помог мне разобраться в моей проблеме с MAMP на OSX с Eclipse. После обновления до MAMP 2.1.1 с 1.X релиз, я не смог заставить xdebug работать в eclipse. Он висел на уровне 57%.
phpinfo показал, что расширение xdebug загружалось нормально, и в журналах PHP или Apache не было ошибок.
Я только хотел отлаживать локально, но причиной проблемы было то, что удаленная отладка не была включена. Добавление отладчика xdebug.remote_enable=true в МАМП PHP.шаблон ini и перезапуска МАМП решить эту проблему.
в моем случае приложение CLI работало нормально, но это было веб-приложение, которое застревало на 57%.
Он работал после 2 изменения:
- сделал сервер отладчик как XDebug
- автоматически генерировать URL-адреса, правда.
если
Netweaver/Eclipse
не удается подключиться кXDebug
, вы можете проверитьApache
журналы для возникновения чего-то вроде:Cannot load Xdebug - it was built with configuration API220090626,TS,VC6, whereas running engine is API220090626,TS,VC9 [Fri Jun 01 18:38:05 2012] [notice] Child 3404: Child process is running
чтобы исправить это, Выберите правильный вариант
XDebug
двоичный файл изXDebug
сайт (попробуйте несколько комбинаций, пока вы не получите его работу)
Перед настройкой eclipse проверьте, что в функции phpinfo отображается следующее содержимое.
эта программа использует механизм языка сценариев Zend: Zend Engine v2. 4. 0, Copyright (c) 1998-2013 Zend Technologies с Xdebug v2.2. 3, Copyright (c) 2002-2013, Дерик Ретанс
Я тоже столкнулся с той же проблемой. Я проверил все настройки в PHP с выводом
phpinfo()
и все было нормально.разрешение Java (TM) Platform SE binary через брандмауэр сделало трюк.
Проверьте команды этот вопрос, они очень полезны для отладки!
Я пробовал все возможные решения на этом посту, чтобы заставить xdebug работать на сайте, работающем на Apache (http port 8000), безрезультатно. Затем я случайно заметил, что xdebug работает на другом сайте, который я запускал на порту 80. Как только я изменил другой сайт на порт 80, он, наконец, позволил мне отладить его.
интересно, есть ли параметр, который может направить Apache, чтобы разрешить xdebug на других портах, а не только на 80. У меня есть более одного сайта, работающего в Apache, и я хотел бы отлаживайте каждый из них без необходимости перенастраивать порты. У кого-нибудь была эта проблема раньше? или знает как это исправить?
Если ваша конфигурация в порядке, просто удалите файл : ВАШЕ РАБОЧЕЕ ПРОСТРАНСТВО./метаданные./Плагины/орг.затмение.ядро.ресурсы./корень./маркеры
была такая же проблема с использованием Uniserver Zero XIII 13.2.0(требуется распространяемая установка MS VC12) и Eclipse Neon Release Candidate 3 (4.6.ORC3). Наш сайт использует phalcon, когда мы нашли проблему с phalcon.dll и php7.0 мы вернулись к php5.6. Мы проверили настройки xdebug выше, добавили zend_extension=$(US_ROOTF)/php56/extensions/php_xdebug.dll--не будет подключаться, нет точек останова.
найдено предупреждение в верхней части диалогового окна Eclipse Project / Properties / PHP / Debug | Настройка Параметров Рабочей Области... | PHP исполняемые файлы | PHP56(рабочая область по умолчанию) | редактировать | отладчик | "отладчик xdebug Extension не установлено. Пожалуйста, посетите http://xdebug.org...". это заставило нас с подозрением относиться к версии php_xdebug.dll (2.5.0) в Uniserver 13.2.0 php56. Я скачал php_xdebug-2.4.1-vc11.dll, бросил его в/php56 / extensions и PRESTO! Затмение PHP отладчик работает!
для меня, добавив элемент [xdebug] конфигурации, предложенные другими для php.ini файл хранится в следующем пути C:\wamp64\bin\apache\apache2.4.23\bin помогли. По сути, это символическая ссылка, которая указывает / ссылки на phpForApache.ini-файл в соответствующей папке версии php, которая устанавливается с помощью wamp64, например php5.6.25.
в двух словах, добавив следующие строки phpForApache.ini, Я -
zend_extension = c:\wamp64\bin\php\php5.6.25\ext\php_xdebug-2.5.1-5.6-vc11-x86_64.dll xdebug.remote_enable=On xdebug.remote_host="localhost" xdebug.remote_port=9000 xdebug.remote_handler="dbgp"
надеюсь, что это помогает
вот еще один блог, в котором упоминается, как проверить, правильно ли установлен Xdebug или нет с помощью командной строки http://allcodeverything.blogspot.com/2012/07/code-debugging-with-xdebug-and-eclipse.html
Он упоминает об этом Если вы хотите выяснить, все ли работает хорошо, вот хороший кусок кода, который вы будете запускать через CLI (интерпретатор командной строки, в основном за пределами Apache или браузера; просто чистый PHP) после того, как вы набрали следующее Ваш браузер: "http://localhost/dbgtest.php?XDEBUG_SESSION_START=ceable"
<?php $address = "localhost"; $xdebug_port = 9000; $sock = socket_create(AF_INET, SOCK_STREAM, 0); socket_bind($sock, $address, $xdebug_port) or die('Unable to bind'); socket_listen($sock); $debug_client = socket_accept($sock); echo "connection established: $debug_client"; socket_close($debug_client); socket_close($sock); ?>
окно командной строки должно печатать что-то вроде "соединение установлено: идентификатор ресурса #5".