Устранение неполадок удаленной отладки PHPUnit xdebug с помощью PHPStorm - PullRequest
4 голосов
/ 22 марта 2012

Я пытаюсь заставить работать удаленную отладку Xdebug, я использую PHPStorm в качестве своей IDE. Мой веб-сервер / код размещен на удаленной машине (amazon ec2).

У меня есть следующие строки в моем php.ini на моем удаленном сервере (PHP CLI, так как я выполняю отладку PHPUnit)

zend_extension=/usr/lib/php5/20090626+lfs/xdebug.so
xdebug.remote_enable = 1
xdebug.remote_autostart = 1
xdebug.remote_handler = dbgp
xdebug.remote_mode = req
xdebug.remote_connect_back = 1
xdebug.remote_port = 9000

Поскольку я программирую из своей домашней сети, я открыл порт 9000 на своем персональном маршрутизаторе. У меня есть сервер xdebug PHPStorm, который указывает на удаленный сервер через порт 80 с Xdebug в качестве отладчика.

Теперь, когда я пытаюсь отладить тест PHPUnit из PHPStorm, он просто говорит 'ожидание входящих соединений с ключом ide' 12115 ' Кроме того, он выбирает случайный ключ ide каждый раз (я хочу надеяться, что PHPUnit устанавливает idekey на самом сервере)

Я пытался заставить это работать более 10 часов, я попытался определить свой конкретный remote_host в php.ini вместо использования remote_connect_back, но это также не сработало. Я попытался установить idekey в php.ini, и это не сработало.

Есть ли способ подтвердить, что Xdebug работает так, как задумано на стороне веб-сервера? Как я могу проверить свои настройки Xdebug без использования Phpstorm, я не знаю, является ли это проблемой соединения между моей домашней сетью и удаленным сервером или чем-то другим.

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

Ответы [ 5 ]

5 голосов
/ 24 мая 2013

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

Мое решение в значительной степени основано на предложении Рафаэля Домса в его сообщение в блоге под названием: Отладка тестов PHPUnit в NetBeans с XDebug

Окружающая среда

  • IDE: PHPStorm 6.0.2
  • Сервер: WAMP-сервер (32-битный и PHP 5.4.3) 2.2E
  • XDebug: 2.2.2

XDebug

zend_extension=c:\wamp\bin\php\php5.4.3\ext\php_xdebug-2.2.2-5.4-vc9.dll
xdebug.extended_info=1
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
xdebug.remote_log=c:/wamp/tmp/xdebug/xdebug_remote.log

Указанные выше параметры конфигурации находятся в файле "php.ini" для CLI. Для установки WAMP по умолчанию полный путь к этому файлу: C: \ wamp \ bin \ php \ php5.4.3 \ php.ini

PhpStorm

Прежде всего вы должны создать «Конфигурацию сервера» (google «Создание конфигурации сервера - JetBrains» для официального документа по теме), указав «Xdebug» в качестве «Отладчика».

Затем создайте новую «Конфигурацию удаленной отладки PHP» (google «Создание и редактирование конфигураций запуска / отладки - JetBrains» для официального документа по теме), указав следующие значения в разделе «Конфигурация»:

  • Серверы: сервер, созданный выше
  • Ключ Ide: PHPSTORM

Теперь выберите эту конфигурацию и нажмите кнопку «Отладка» (или «Shift + F9»). PHPStorm отобразит панель «Отладка» и покажет сообщение: Ожидание входящего соединения с помощью ключа 'PHPSTORM'

Наконец, «запустите» ваш тест PHPUnit. Есть несколько способов. Один из них:

  • Щелкните правой кнопкой мыши имя файла, в котором находится тест PHPUnit.
  • Выберите «Выполнить имя файла »

Вот и все! С этого момента XDebug получит контроль.

1 голос
/ 23 марта 2012

Если вы используете Xdebug 2.2.0RC1, то удаленный журнал отладки (http://xdebug.org/docs/all_settings#remote_log) сообщит вам об успешных и неудачных попытках подключения. Это может точно определить, является ли проблема на стороне Xdebug или стороне phpstorm.

0 голосов
/ 23 мая 2019

В моем случае он начал работать, когда я изменил порт на 9000. Команда phpunit в Phpstorm теперь была: /usr/bin/php -dxdebug.remote_enable=1 -dxdebug.remote_mode=req -dxdebug.remote_port=9002 -dxdebug.remote_host=10.0.2.2 /var/www/application/vendor/phpunit/phpunit/phpunit --bootstrap /var/www/application/tests/Bootstrap.php --configuration /var/www/application/tests/phpunit.xml <testfile> --teamcity

0 голосов
/ 25 июня 2014

Так как мне потребовался день, чтобы заставить его работать, я подведу итоги:

Убедитесь, что вы меняете правильный php.ini, XAMPP использует другой php.ini и phpверсия, чем предустановленная в OS X Mavericks.

Определите файл журнала и, если в него ничего не записано, вы меняете неправильный php.ini

В phpstorm вы можете проверить соединение с сервероми получить представление, если вы работаете с правильным php.ini или по-прежнему что-то не так.

Вам нужно изменить настройки для отладки (возможно, стоит изменить порт на 9001), сервер, все вНастройки и настройка phpstorm.

Вы должны установить уровень языка php и Интерпретатор (используйте тот, который использует ваша конфигурация Apache mysql php), например / Application / XAMPP / xamppfiles / bin, нажмите ..., чтобы увидеть Php, и если отладчикприлагается.Возможно, вам придется использовать другую версию xdebug.

В серверах вы должны определить хост как

http://yourdefinitionofprojectonlocalhost

с обычно портом 80 и Xdebug.Здесь важно проверить удаленную среду.

В разделе отладки вы можете установить порт отладки, если вы измените его на 9001, измените его и в php.ini, выберите Can Accept external Connections.

Если вы не включите Start для прослушивания PHP Debug Connection, у вас не будет надежды заставить его работать (значок в правом верхнем углу или вниз в меню Run).

В Edit Configurations ...Вы должны определить веб-приложение PHP, чтобы иметь возможность использовать Debug в меню «Выполнить».

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

Как видите, я пробовал много вариантовв моем php.ini и в итоге использовал версию xdebug, найденную в моем каталоге mamp:

;zend_extension="/usr/lib/php/extensions/no-debug-non-zts-20100525/xdebug.so"
zend_extension="/Applications/MAMP/bin/php/php5.5.10/lib/php/extensions/no-debug-non-   zts-20121212/xdebug.so"

[xdebug]
;xdebug.var_display_max_children = 999
;xdebug.var_display_max_data = 99999
;xdebug.var_display_max_depth = 100
;xdebug.remote_enable = 1
;xdebug.remote_port=9001
;xdebug.profiler_enable=1
xdebug.remote_connect_back=0
;xdebug.remote_handler=dbgp
;xdebug.remote_host=localhost
;xdebug.profiler_output_dir=/Users/mypath/tmp
xdebug.remote_log=/Users/mypath/xdebug.log
;xdebug.remote_mode=req

xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9001

Желаю вам скорейшего успеха, чем у меня.

0 голосов
/ 01 ноября 2012

В моем случае проблема заключалась в том, что у меня была конфигурация xdebug в /etc/php/fpm/php.ini, но php-cli использует /etc/php/cli/php.ini.

...