Мне нравится удаленная отладка для работы со следующей конфигурацией программного обеспечения:
Win 7 Pro 64-бит 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.
У кого-нибудь есть идея, где искать ошибку или что еще я мог бы попытаться заставить этот материал работать?
Большое спасибо за вашу помощь заранее, Майкл
ps Извините, мне не разрешено размещать более двух ссылок, потому что я новичок здесь, поэтому нет гиперссылки на мастер xdebug.
Может быть, немного поздно, но …
Здесь у вас есть противоречие с вашими настройками:
xdebug.remote_host="localhost" xdebug.remote_connect_back=On
Эти две настройки перекрываются. Каков ваш случай?
a) Вы хотите отлаживать приложение только из одного источника (например, вы разрабатываете и развертываете на localhost
).
Затем вы почти закончили: вы уже определили, что удаленный хост является localhost
. Комментируйте строку remote_connect_back
(с ;
)
b) Вы хотите принять несколько источников разработки (например, несколько машин отлаживают приложение в той же сети).
Затем строка remote_host
переопределяется, поэтому вы можете удалить или прокомментировать ее.
Это фактически конфигурация, которую вы сейчас используете. Итак, что в этом плохого? Проверьте этот сценарий:
<? 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
все равно будет вполне понятным.
Вы можете попытаться отключить IPV6 http://support.microsoft.com/kb/929852 , я думаю, что это проблема, когда вы пытаетесь подключиться.
Удаленный адрес найден, подключившись к :: 1: 9000.
Система пытается подключиться к IPV6, и я думаю, что XDebug разрешен только для IPV4.
Где именно ваша точка останова в вашем коде? Я знаю, что 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
Если вы используете хром, установите следующий плагин: 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 верны