Не могу заставить Xdebug работать на Windows 7 - PullRequest
6 голосов
/ 15 декабря 2009

Я установил последний пакет XAMPP, который включает PHP 5.3.0. Я пытаюсь включить Xdebug, но он просто не работает.

Вот что я изменил в php.ini, поставляемом с XAMPP:

; uncommented
zend_extension = "X:\xampp\php\ext\php_xdebug.dll"

; added the following lines:
xdebug.remote_enable=true
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.remote_handler=dbgp

Apache запускается нормально, но когда я открываю http://localhost/ в своем браузере, я получаю следующую ошибку:

alt text

Если я нажму кнопку Close the program, сообщение об ошибке снова появится через секунду, как если бы оно было в бесконечном цикле. Я очень признателен за любую помощь в том, чтобы заставить это работать.

У меня установлена ​​новая 64-разрядная версия Windows 7 Ultimate.

EDIT: Из результата phpinfo ():

Zend Extension Build    API220090626,TS,VC6 
PHP Extension Build     API20090626,TS,VC6 
Debug Build             no 
Thread Safety           enabled

Ответы [ 6 ]

4 голосов
/ 15 декабря 2009

Возможно, у вас неправильная версия Xdebug. Я бы взглянул на phpinfo () и сравнил там информацию с различными версиями Xdebug dll .

В частности, вы хотите увидеть, включена ли «Thread Safety», и вам нужно знать, используете ли вы скомпилированный VC6 PHP или VC9 (если вы используете Apache, почти гарантированно, что вы хотите VC6).

3 голосов
/ 02 сентября 2012

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

Двоичные файлы Windows обычно работают для каждого мини-релиза для упомянутой версии PHP, хотя расширение построено для самой последней версии PHP того времени. Маркер VCx сообщает, с каким компилятором было построено расширение, и не является потокобезопасным, был ли ZTS отключен. Эти квалификаторы должны соответствовать используемой вами версии PHP. Если вы не знаете, какой из них вам нужен, обратитесь к пользовательским инструкциям по установке.

http://xdebug.org/wizard.php

Просто вставьте свой phpinfo в текстовое поле, и вы получите точный xdebug dll, который вам понадобится для вашего php

2 голосов
/ 12 октября 2011

Честно говоря, у меня тоже было 2 ДЕЙСТВИТЕЛЬНО плохих дня, и я не знаю, что, наконец, исправило так вот моя коллекция дел и подводных камней:

; this is the thread safe version,
; the absence of _nts_ in the dll name 'shows' this
; do not use _ts, your library won't get registered and won't show in phpInfo()
zend_extension = "D:/wamp/bin/php/php5.3.8/zend_ext/php_xdebug-2.1.2-5.3-vc9-x86_64.dll"

проверьте ваш php.ini, проверьте phpinfo (), если все значения (прибывают)

xdebug.remote_enable = on
xdebug.remote_handler=dbgp
xdebug.profiler_enable = off
xdebug.profiler_enable_trigger = off
; if you have multiple virtual hosts ( like 'local.fooclient' )
; maybe using the IP is safer (for any same-machine-debugging)
xdebug.remote_host=127.0.0.1
; maybe a -much- lower port helped, 84 was free. use netstat to figure out.
xdebug.remote_port=84
; idekey! also see note below
xdebug.idekey=netbeans-xdebug

Больше ловушек:

Я несколько раз видел в сети опечатку xdebug.remote_handle (без r). берегитесь.

Примечание к idekey: вышеупомянутый idekey действительно отображался в phpinfo () как master value, НО был переопределен 'локальным значением', таким как MYMACHINENAME $. ==> Установка глобального env var (в свойствах компьютера) с именем DBGP_IDEKEY и перезагрузка (или, возможно, просто выход из системы) для (также) netbeans-xdebug помогает! Опять же: перепроверьте в phpInfo (), что это вступило в силу.

Конечно, настройте netbeans-menu: options-> php tab-> раздел отладки для этого порта и идентификатора сессии.

Здесь - скрипт для проверки (средствами php), открыт ли тот порт, с которым вы собираетесь общаться. (далее также в комментариях, для тех, кто слишком ленив, напечатайте с картинки)

Чтобы ваш браузер подключился, не забывайте (из-за разочарования) всегда присоединять начальный аргумент отладки get:

  http://localhost/myTest.php?XDEBUG_SESSION_START=netbeans-xdebug

На границе порта также может помочь этот инструмент .

Quadruplecheck вы держите скомпилированные версии VC6 и VC9 всего.

Запуск вашего whatever/path/php.exe myTest.php из командной строки (после выполнения вышеуказанных настроек) также может выявить дополнительные ошибки (так и было, когда я возился с неверной DLL).

Могу порекомендовать http://www.wampserver.com (по личным причинам он подходит мне лучше, чем популярный пакет xampp ...)

0 голосов
/ 22 мая 2011

Когда xdebug установлен не с XAMPP, а только с PHP (32-битная, TS, VC6, в C: \ Program Files (x86) \ PHP) и Apache (32-битная) в Windows 7 (64-битная), в php .ini вам необходимо указать полный путь к папке x86 Program Files, например.

zend_extension="C:\Program Files (x86)\PHP\ext\php_xdebug-2.1.1-5.3-vc6.dll"

и НЕ

zend_extension="C:\Program Files\PHP\ext\php_xdebug-2.1.1-5.3-vc6.dll"

Это была моя ошибка, когда меняли папку x86, xdebug начал работать отлично. Надеюсь, это поможет вам тоже.

0 голосов
/ 09 февраля 2010

Как уже говорили другие, вам нужно сопоставить версию xdebug с вашей версией php.

Вы уже сопоставили номер версии PHP, безопасность потоков и компилятор.

Если вы еще не поняли это (это старая ветка), вам не хватает конфигурации INI. Если вы загружаете модуль, который безопасен для потоков, вам необходимо следующая строка:

zend_extension="C:\Path\To\The\Extension.dll"

Если модуль не потокобезопасен, то вы используете директиву INI, которую вы пытались использовать.

Это относится только к zend_extension, а не к обычным расширениям.

0 голосов
/ 15 декабря 2009

Да, есть известная проблема - почти невозможно заставить Xdebug работать с последними версиями Xampp и 64-битной Vista / Win 7.

Существует ошибка , о которой многие пользователи жалуются.

Решение, похоже, последняя бета-версия на Xampp . Он включает в себя версию 2.0.6 (dev) xdebug и работает просто отлично.

Я тестировал его на 64-битной Vista в течение примерно 10 дней и не столкнулся с какими-либо проблемами.

...