Xdebug для удаленного сервера не подключается - PullRequest
36 голосов
/ 08 ноября 2011

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

Для справки, я успешно установил Xdebug локально на машине с Windows 7, на которой работает WampServer. Поэтому я могу отлаживать PHP с точками останова в NetBeans, при условии, что для свойства Свойства проекта-> Выполнить настройку-> Запуск от имени установлено значение Локальный веб-сайт . Однако, как указано выше, моя цель - отладка в NetBeans на Удаленный веб-сайт .

Мой сервер - машина с Ubuntu 11.04. Я использовал вывод http://www.xdebug.org/find-binary.php, чтобы установить правильный двоичный файл на машине. Я изменил все файлы php.ini, которые я смог найти (как в каталогах php5/apache2, так и php5/cli), чтобы включить эти строки:

zend_extension="/usr/lib/php5/20090626+lfs/xdebug.so"
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_host=localhost
xdebug.remote_port=9000

Если я проверю phpinfo.php веб-страницу, там будет написано:

This program makes use of the Zend Scripting Language Engine:
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
    with Xdebug v2.1.2, Copyright (c) 2002-2011, by Derick Rethans

Так что Xdebug, кажется, установлен правильно. Тем не менее, когда я пытаюсь отладить в NetBeans, я получаю бесконечное сообщение в строке состояния Ожидание соединения (netbeans-xdebug) . Когда я нажимаю кнопку «Стоп», я получаю В течение X секунд соединение от xdebug не обнаружено. Причиной может быть то, что xdebug не установлен или неправильно настроен .

Может я тут путаю локальные настройки с настройками сервера? В сообщении сказано, что xdebug.remote_host должен быть установлен на IP-адрес компьютера, на котором запущен NetBeans , но я хочу, чтобы команда могла отлаживать с использованием компьютеров с разными IP-адресами. Проблемой может быть порт 9000, но я проверил, что он не заблокирован.

Буду признателен за любую помощь, которая может прояснить это!

Ответы [ 8 ]

57 голосов
/ 08 ноября 2011

Сервер, работающий на PHP (и XDebug), должен иметь возможность подключаться к вашей рабочей станции / рабочему столу.

Diagram

Таким образом, вам нужно настроить сервер соответствующим образом, либо указав ему подключиться к определенному IP-адресуxdebug.remote_host) или для автоматического «обратного подключения» (xdebug.remote_connect_back).Последний имеет некоторые последствия для безопасности, хотя.Они изложены в руководстве .

16 голосов
/ 08 ноября 2011

Ключевая директива такова:

xdebug.remote_connect_back = On

Это позволяет веб-серверу подключаться к любому компьютеру, который запрашивает сеанс отладки. Таким образом, вам не нужно жестко кодировать IP-адрес и вы можете поделиться Xdebug. Эта директива отсутствовала в более ранних версиях и часто не указывается в руководствах и документации.

Вам также необходимо убедиться, что каждый клиентский компьютер принимает входящие подключения к порту 9000 (xdebug.remote_port). Это включает в себя настройку брандмауэра и проверку того, что клиент отладчика запущен и работает

15 голосов
/ 27 марта 2015

Для меня xdebug.remote_connect_back = On не работает.Я установил переадресацию порта ssh на моем клиентском компьютере.

xdebug config на удаленном компьютере:

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

переадресация портов на клиентском компьютере:

ssh -g -N -lusername -R9000:127.0.0.1:9000 [remote.host.ip]

Доступ к оболочке на удаленном компьютере должен быть разрешен.

6 голосов
/ 06 октября 2016

В моем случае мне помогли эти команды:

xdebug.remote_enable = On
xdebug.remote_autostart=1

Обратите внимание: отладчик будет работать, даже если переменная GET / POST / COOKIE отсутствует из-за 'xdebug.remote_autostart = 1'

1 голос
/ 15 октября 2018

У меня была такая же проблема пару раз, когда я пытался настроить докер, и после того, как несколько раз почесал голову, я понял, что это способ исправить это.Поэтому я решил поместить это здесь в качестве ответа для своего будущего я.

Большую часть времени Dockerfile добавлял это выражение в php.ini:

xdebug.remote_connect_back     = on

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

xdebug.remote_connect_back     = 0
xdebug.remote_host             = host.docker.internal

Конечно, после этого вам все равно нужно запустить: $ docker-compose down $ docker-compose build и $ docker-compose up -d

1 голос
/ 22 февраля 2015

Спасибо за xdebug.remote_connect_back = On на стороне сервера php.ini
Также мне пришлось использовать этот плагин для Chrome, чтобы иметь возможность начать сеанс отладки в PhpStorm

0 голосов
/ 01 августа 2012

Вам понадобится установить:

xdebug.remote_host=192.168.1.104

192.168.1.104 - это ip клиента, где вы работаете с IDE

0 голосов
/ 08 ноября 2011

Какое расширение страницы вы запускаете, чтобы начать отладку? Я помню, что сошел с ума и провел бессонные ночи, где все настройки с XDebug идут отлично. Проблема была в том, что я не начинал с .PHP, а начинал с .HTML.

Если это так, попробуйте запустить отладку с файлом .PHP.

...