Xdebug для удаленного сервера, не подключающегося

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

Для записи я успешно установил Xdebug локально на компьютере под управлением Windows 7 с WampServer. Поэтому я могу отлаживать PHP с точками останова в NetBeans, если я установил свойство Project Properties- > Run Configuration- > Run As на локальный веб-сайт. Однако, как указано выше, моей целью является отладка в 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, я получаю бесконечное сообщение строки состояния Waiting For Connection (netbeans-xdebug). Когда я нажимаю кнопку "Стоп", я получаю Нет соединения из xdebug, которое было обнаружено в течение X секунд. Причина может заключаться в том, что xdebug не установлен или неправильно настроен.

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

Любая помощь, которая могла бы прояснить это, была бы оценена!

Ответ 1

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

Диаграмма

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

Ответ 2

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

xdebug.remote_connect_back = On

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

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

Ответ 3

Для меня 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]

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

Ответ 4

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

xdebug.remote_enable = On
xdebug.remote_autostart=1

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

Ответ 5

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

Если вы затем попытаетесь запустить отладку с помощью файла .PHP.

Ответ 6

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

xdebug.remote_host=192.168.1.104

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

Ответ 7

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