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