Я хочу, чтобы команда, использующая разные компьютеры, могла отлаживать PHP на удаленном сервере, но мне трудно заставить Xdebug работать в NetBeans 7.0.1. Я пробовал много онлайн-советов, но безрезультатно.
Для записи я успешно установил 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
веб-страницу 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, но я проверил, что он не заблокирован.
Любая помощь, которая могла бы прояснить это, была бы оценена!
Сервер, на котором запущены PHP (и XDebug), должен иметь возможность подключаться к вашей рабочей станции / рабочему столу.
Таким образом, вам понадобится сервер, настроенный соответственно, либо сообщив ему, чтобы подключиться к определенному IP-адресу ( xdebug.remote_host
), либо автоматически «подключиться обратно» ( xdebug.remote_connect_back
). Однако последнее имеет некоторые последствия для безопасности. Они изложены в руководстве .
Ключевая директива такова:
xdebug.remote_connect_back = On
Это позволяет веб-серверу подключаться к любому компьютеру, запрашивающему сеанс отладки. Таким образом, вам не нужно жестко программировать IP-адрес и вы можете делиться Xdebug. Эта директива отсутствовала в более ранних версиях и часто исключается из учебников и документации.
Вам также необходимо проверить, что каждый клиентский компьютер принимает входящие подключения к порту 9000 ( xdebug.remote_port
). Это включает настройку брандмауэра и обеспечение готовности клиента отладчика
Для меня это xdebug.remote_connect_back = On
не работает. Что я сделал, была настроена пересылка порта ssh на моей клиентской машине.
Конфигурация xdebug на удаленном компьютере:
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]
Доступ к оболочке на удаленной машине должен быть разрешен.
В моем случае эти команды помогли мне:
xdebug.remote_enable = On xdebug.remote_autostart=1
Обратите внимание: отладчик будет работать, даже если переменная GET / POST / COOKIE отсутствует из-за «xdebug.remote_autostart = 1»
Какое расширение страницы вы запускаете, чтобы начать отладку? Я помню, я сошел с ума и провел бессонные ночи, когда все настройки с XDebug прекрасны. Проблема в том, что я не начинал с .PHP
а начинал с .HTML
.
Если вы попытаетесь запустить отладку с файлом .PHP
.
Вам понадобится установить:
xdebug.remote_host=192.168.1.104
192.168.1.104
– это IP-адрес клиента, где вы работаете с IDE
Спасибо за xdebug.remote_connect_back = On
стороне сервера php.ini
Также я должен был использовать этот плагин для Chrome, чтобы начать отладку сеанса в PhpStorm