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

Удаленная отладка PHP: XDebug не может подключиться к клиенту JetBrains php Storm

Мне нравится, когда удаленная отладка работает со следующей конфигурацией программного обеспечения:

Win 7 Pro 64bit WAMP Server 2.2 (32 бит), вкл. Apache 2.2.22, PHP 5.4.3, XDebug php_xdebug-2.2.1-5.4-vc9.dll JetBrains PHPStorm 4.0.3

1.) WAMP запущен и работает, мой сайт можно найти под localhost/fox/

2.) PHP Storm имеет проект, в котором есть сопоставление между моими исходными файлами и псевдонимом apache localhost/fox

2.) Я установил расширение PHP XDebug и добавил следующие строки в свой php.ini

[xdebug]
zend_extension="c:/wamp/bin/php/php5.4.3/zend_ext/php_xdebug-2.2.1-5.4-vc9.dll"
xdebug.remote_enable=On
xdebug.remote_host="localhost"
xdebug.remote_port=9000
xdebug.remote_connect_back=On
xdebug.remote_autostart=On
xdebug.profiler_enable=On
xdebug.profiler_enable_trigger=off
xdebug.profiler_output_name=cachegrind.out.%t.%p
xdebug.profiler_output_dir="c:/wamp/tmp"
xdebug.remote_log="C:/wamp/tmp/xdebug.log"
xdebug.remote_cookie_expire_time=6000

Для этого необходимо настроить удаленный отладчик XDebug и адрес обратной связи.

Я уже установил свою установку здесь: xdebug.org/wizard.php

3.) Я настроил phpstorm, сначала я добавил локальный сервер

а затем проверил мои настройки здесь

http://www.bilder-hochladen.net/files/jrn0-2-c81e-jpg-nb.html

(я попробовал 127.0.0.1/fox как адрес сервера, а вместо этого localhost)

hier мои настройки отладки: http://www.bilder-hochladen.net/files/jrn0-1-c4ca-jpg.html

Теперь я перезапускаю свой apache, я вхожу в phpstorm, устанавливаю точку прерывания (красный), щелкаю функцию

Run  -> Start listen to PHP Debug Connections

Телефонная трубка загорает на зеленый, что бы это ни было, но это позитивный сигнал для меня.

Когда я теперь запускаю свой php Script на локальном веб-сервере absolutley, ничего не происходит, программа работает над точкой прерывания и не останавливается.

В журнале Xdebuggers (C:/wamp/tmp/xdebug.log) я нахожу грузы таких сообщений, как эти:

 I: Checking remote connect back address.
 I: Remote address found, connecting to ::1:9000.
 E: Could not connect to client. :-(
 Log closed at 2012-07-19 14:21:08

Где-то в Интернете я нашел подсказку, что брандмауэр Windows мог блокировать связь, поэтому я отключил его, но это не помогло.

Я также пытался подключиться через telnet к localhost: 9000, и я получил ответ от phpstorm.

Есть ли у кого-нибудь идея, где искать ошибку или что еще я мог бы попытаться заставить этот материал работать?

Большое спасибо за вашу помощь заранее, Майкл

p.s. Извините, мне не разрешено размещать более двух ссылок, потому что я новичок здесь, поэтому нет гиперссылки на мастер xdebug.

4b9b3361

Ответ 1

Может быть, немного поздно, но...

Здесь у вас есть противоречие с вашими настройками:

xdebug.remote_host="localhost"
xdebug.remote_connect_back=On

Эти две настройки перекрываются. Каков ваш случай?

a) Вы хотите отлаживать приложение только из одного источника (например, вы разрабатываете и развертываете до localhost).

Затем вы почти закончили: вы уже определили, что удаленный хост localhost. Комментируйте строку remote_connect_back;)

b) Вы хотите принять несколько источников разработки (например, несколько машин отлаживают приложение в той же сети).

Затем строка remote_host переопределяется, поэтому вы можете удалить или прокомментировать ее.

Это фактически конфигурация, которую вы в настоящее время выполняете. Итак, что с этим не так? Проверьте, работает ли это script:

<?
echo $_SERVER['REMOTE_ADDR'];

Выход будет ::1. Ну, хост, делающий запрос на ваш сервер Apache, localhost. И Apache разрешает это имя как IPv6-адрес ::1, который в конце концов не ошибается. Но Xdebug не может подключиться к IPv6-адресу. См:

I: Remote address found, connecting to ::1:9000.
E: Could not connect to client. :-(

Таким образом, наша цель будет заключаться в том, чтобы Apache разрешить localhost предпочтительно на IPv4-адрес (без отключения поддержки IPv6 на уровне ОС или на уровне Apache). Это может быть достигнуто добавлением в ваш файл hosts следующей строки:

127.0.0.1 localhost

Этот простой взлом сделает трюк! Теперь localhost всегда будет предпочтительно разрешаться как адрес IPv4, а ::1 будет по-прежнему понятным.

Ответ 2

Вы можете попытаться отключить IPV6 http://support.microsoft.com/kb/929852, я думаю, что это проблема, когда вы пытаетесь подключиться.

Удаленный адрес найден, подключившись к:: 1: 9000.

Система пытается подключиться к IPV6, и я думаю, что XDebug включен только для IPV4.

Ответ 3

Где именно ваша точка останова в вашем коде? Я знаю, что XDebug может быть забавным.

Для PHP 5.4 ваши настройки Xdebug должны быть

[XDebug]
zend_extension="<path to php_xdebug.dll>"
xdebug.remote_enable=1
xdebug.remote_port="<the port for XDebug to listen to>" (the default port is 9000)
xdebug.profiler_enable=1
xdebug.profiler_output_dir="<AMP home\tmp>"

http://www.jetbrains.com/phpstorm/webhelp/configuring-xdebug.html

Ответ 4

Если вы используете хром, установите следующий плагин: https://chrome.google.com/webstore/detail/xdebug-helper/eadndfjplgieldjbigjakmdgkmoaaaoc после установки установки вашего IDE-ключа как в плагине, так и в phpstorm

Мне удалось запустить его только с этими двумя дополнительными строками в файле php.ini:

[XDebug]
;; Only Zend OR (!) XDebug
zend_extension = C:\php\ext\php_xdebug-2.2.1-5.3-vc9.dll
xdebug.remote_enable=true

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