2009-12-14 3 views
6

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

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

Я запускаю новую установку Windows 7 Ultimate 64-bit.

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

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

ответ

4

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

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

+0

безопасность Тема включена. PHP соответствует VC6. Я захватил потокобезопасный 5.3 VC6, и ни 32-битный вкус, ни 64-битный вкус не загружены. Однако Apache больше не разбивается. – Derek

+0

Это полезно, у меня был php 5.4, но я пытался установить 5.3 dll, который, однако, не дал ошибку. – Nap

0

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

Там есть bug сообщается с многими пользователями жалуются на это.

Решение похоже на latest beta version on Xampp. Он включает в себя версию 2.0.6 (dev) xdebug, и он работает нормально.

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

0

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

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

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

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

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

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

+1

Примечание. Использование _ts НЕ правильно для Apache 2.2.21, PHP 5.3 под W7 x64, даже если PHP и Apoache - это TS, используйте обычный ключ (просто назначьте ему правильную dll, тот, который не имеет _nts_ в нем). Возможно, это было правильно некоторое время назад. –

+0

Вы правы, сомневаетесь, что кто-нибудь увидит мое сообщение на этом этапе, но я обновил его. – dcousineau

0

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

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 начал работать отлично. Надеюсь, это тоже поможет вам.

2

откровенная-LY, я также имел 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_ (без r) несколько раз в Интернете. берегитесь.

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

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

Here - это скрипт для проверки (с помощью php), если этот порт, с которым вы собираетесь разговаривать, открыт. (ниже также в комментариях, для тех, кто слишком ленив).

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

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

на границе порта, также this tool может помочь.

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

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

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

3

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

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

http://xdebug.org/wizard.php

Просто вставьте phpinfo из положить в текстовом поле, и вы получите точную Xdebug DLL вам потребуется для PHP

+0

Это замечательно. Единственная проблема заключается в том, что он устанавливает его непосредственно в PHP, поэтому вам потребуется немного больше настроек, чтобы запустить его из командной строки - это то, что делают некоторые инструменты. – Dunhamzzz

+0

Волшебник спас меня, больше ничего не пробовал. Закончился абсолютный или относительный путь. – Josh