Подтвердить что ты не робот

Сеанс eclipse xdebug никогда не завершается

Я пытаюсь заставить xdebug работать с eclipse (3.5)/php (на xampp windows 7). Я подтвердил, что xdebug включен в php - у меня есть причудливый вывод, и моя phpinfo показывает все файлы xdebug. У меня удаленная отладка, и я набрал адрес lan ip на моей машине затмения.

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

Однако в перспективе отладки eclipse он показывает 'запуск myproject' 57% ', ожидающий сеанса xdebug'. Он сидит там навсегда.

Я отключил брандмауэр Windows на обеих машинах.

Я попытался включить неявный флеш.

Любые идеи?

4b9b3361

Ответ 1

У меня тоже была эта проблема, и я пропустил эту строку в файле php.ini:

xdebug.remote_enable = On

Ответ 2

Убедитесь, что вы определили 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 или Eclipse.
  • другое приложение не использует порт (выполнить: netstat -an |find /i "listening" из командной строки)

Если вам нужно настроить использование другого порта в php.ini:

xdebug.remote_enable = on
xdebug.remote_port = XXXX 

и исправьте настройки Xdebug в Eclipse:

XDEBUG settings in Eclipse

Ответ 3

У меня была та же проблема, и я исправил ее, изменив порт на 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 в строке 0

Предупреждение: Xdebug ДОЛЖЕН быть загружен как расширение Zend в Неизвестно в строке 0

Если вы это сделаете, откройте файл php.ini и прокомментируйте его с помощью;; строка extension=php_xdebug-2.dll:

;extension=php_xmlrpc.dll
extension=php_xsl.dll
**;extension=php_xdebug-2.dll**
;/PHPExt

Ответ 4

После трехчасового боя и опробования каждого решения на форумах я узнал, что простой трюк состоял в том, чтобы удалить кавычки, указав путь в DLL Xdebug в zend_extension strong > в 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 > Отладкa > Xdebug тоже. Кроме того, перезапустите apache после редактирования php.ini.

Как только я добавил это в php.ini, все работало, как мороженое.

Ответ 5

У меня была такая же проблема с Zend Studio. Я заметил, что сеанс xdebug не запускался должным образом. Я передал эту строку в URL-адрес один раз, и с тех пор он работал.

http://localhost/myalias/?XDEBUG_SESSION_START=ECLIPSE_DBGP&KEY=13750956767461

Я уверен, что это вопрос конфигурации где-то в среде IDE.

Ответ 6

Я понял, что порт TCP используется, и именно поэтому он висел. Я изменил порт в настройках php.ini и eclipse.

Ответ 7

проверьте эту ссылку:

http://xdebug.org/docs/remote

Существует один сеанс о новых плагинах для chrome и firefox, и они работают нормально.

Ответ 8

Проверьте правильность настроек веб-браузера Eclipse.

Окно/Настройки/Общие/Веб-браузер/внешние веб-браузеры/Изменить настройки

В моем случае путь к двоичному файлу внешнего веб-браузера был неверным. Он сказал "/usr/bin/mozilla" вместо "/usr/bin/firefox". Не знаю, как эта настройка появилась, но после ее изменения наконец появилось окно браузера Firefox.

Ответ 9

Я просмотрел журнал apache и было много строк с ошибкой файла, не найденной.

Запуск → Конфигурации отладки → Веб-страница PHP → Your_configuration

Я снял флажок auto generate и установил имя файла index.php.

Кажется, что в случае любой ошибки, которая препятствует нормальному функционированию затмения, это "ожидает сеанса"

Ответ 10

У меня была такая же проблема. Мои конфиги были равны вашим и помимо xdebug.remote_enable = On в файле php.ini также добавляли следующее:

xdebug.remote_connect_back=1

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

xdebug.remote_host=IP_ADDRESS

Ответ 11

Да, проверьте статистику сети/порта. В моем случае я использую vmware fusion на mac, а процесс vmware-natd забивает процессор (блокировка на открытом порту, который я предполагаю), чего я не заметил. php.ini был совершенно прав, пришлось запустить его, чтобы заставить его работать снова:

sudo "/Library/Application Support/VMware Fusion/boot.sh" --restart

Итак, сначала проверьте файл php.ini(или xdebug.ini). Если это выглядит нормально ala это обсуждение, проверьте, не возникли ли у вас проблемы с сетью.

Ответ 12

Я больше не знаю, что это значит для вас или нет! Но вы попали в файл PHP (anything.php) с правильным параметром отладки, что-то вроде XDEBUG_SESSION_START=ECLIPSE_DBGP&KEY=12882809194391.

Люди часто ошибаются, чтобы попасть в файл HTML с параметрами отладки, которые заставляют Eclipse висеть на сессии xdebug

Ответ 13

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

Ответ 14

У меня был такой же симптом. Однако моя проблема заключалась в том, что я установил   xdebug.remote_host = "" Я сделал это, потому что я использую виртуальные хосты apache, чтобы устранить необходимость в localhost. Тем не менее, я изменил его на   xdebug.remote_host = "localhost" а затем измените мой apache/etc/hpppd-vhosts.conf, чтобы указать localhost на мой корень c:\web.

Ответ 15

Для меня эти симптомы были вызваны брандмауэром Windows (Win7 Pro). Мне нужно было явно разрешить eclipse передавать брандмауэр. Я сделал это через диалог в разделе "Панель управления\Все элементы панели управления\Брандмауэр Windows\Разрешенные программы".

Ответ 16

Это может быть не полезно всем, но... при попытке отладки удаленных хостов всегда помните маршрутизатор DSL! (или любой маршрутизатор по пути) Я потратил часы, пытаясь найти решение, когда заметил, что все, что мне нужно было сделать, это активировать переадресацию портов (порт 9000) на моем Linksys, и все работает как шарм:)

Ответ 17

  • Вышеуказанные данные были полезны. Я проверил значения параметра xdebug в phpInfo() и обнаружил, что, несмотря на мои настройки в 1 или Вкл., Auto_trace и remote_enable отключены. Поэтому я сделал это true. А потом удаленная работала!. Спасибо.
  • Обратите внимание: теперь вы можете запустить сеанс удаленной отладки из Eclipse, настроив различные конфигурации отладки OR/и всякий раз, когда вы запускаете такое настроенное приложение вне Eclipse, вы получите вопрос в Eclipse, чтобы принять или не принять сеанс отладки, Поэтому, если вы находитесь на другой машине, чем в интерфейсе eclipse, вы можете обнаружить, что вызов вашего приложения истекает без причины. На самом деле было бы диалоговое окно yes - no, где бы ни был сеанс Eclipse

Ответ 18

Если 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 (попробуйте несколько комбинаций, пока вы не заработаете)

Ответ 19

Этот поток помог мне разобраться в моей проблеме с MAMP на OSX с Eclipse. После перехода на MAMP 2.1.1 из версии 1.x мне не удалось заставить xdebug работать в eclipse. Он висел на уровне 57%.

phpinfo показала, что расширение xdebug было нормально загружено, и ошибок в журналах PHP или Apache не было.

Я только хотел отлаживать локально, но причина в том, что удаленная отладка не была включена. Добавление xdebug.remote_enable = true в шаблон MAMP PHP.ini и перезапуск MAMP решили проблему.

Ответ 20

В моем случае приложение CLI работало нормально, но это было веб-приложение, которое застряло на 57%.

Он работал после двух изменений:

  • сделал отладчик сервера как XDebug
  • Автоматическое создание URL-адреса true.

Ответ 21

Перед настройкой eclipse, проверьте, что в функции phpinfo отображается следующее содержимое.

В этой программе используется движок языка Zend Scripting Language Engine: Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies   с Xdebug v2.2.3, Copyright (c) 2002-2013, Derick Rethans

Ответ 22

Я тоже столкнулся с той же проблемой. Я дважды проверил все настройки в php с выходом phpinfo() и все было в порядке.

Разрешить Java (TM) платформу SE двоичный файл через брандмауэр сделал трюк.

Проверьте команды этот вопрос, они очень полезны для отладки!

Ответ 23

Я пробовал все возможные решения на этом посту, чтобы заставить xdebug работать на сайте, запущенном на Apache (http-порт 8000), безрезультатно. Затем я случайно заметил, что xdebug работал на другом сайте, который работал на порту 80. Как только я сменил другой сайт на порт 80, он, наконец, позволил мне его отладить.

Интересно, есть ли параметр, который может заставить Apache разрешить xdebug для других портов, а не только 80. У меня есть несколько сайтов, работающих в Apache, и я хотел бы отлаживать каждый из них без необходимости перенастраивать порты. У кого-нибудь была эта проблема раньше? или знает, как это исправить?

Ответ 24

Если ваша конфигурация в порядке, просто удалите файл: YOUR_WORKSPACE/.metadata/.plugins/org.eclipse.core.resources/.root/.markers

Ответ 25

Была ли такая же проблема с использованием 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 | Недвижимость | PHP | Отладка | Настройка параметров рабочей области... | Исполняемые файлы PHP | PHP56 (по умолчанию для рабочей области) | Редактировать | Отладчик | "Расширение XDebug не установлено. Пожалуйста, посетите http://xdebug.org...". Это сделало нас подозрительными относительно версии php_xdebug.dll(2.5.0) в Uniserver 13.2.0 php56. Я загрузил php_xdebug-2.4.1-vc11.dll, сбросил его в /php 56/extensions и PRESTO! Eclipse PHP Debugger работает!

Ответ 26

Для меня добавление конфигураций [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"

Надеюсь, что это поможет

Ответ 27

Вот еще один блог, в котором упоминается, как проверить правильность установки 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".