Удаленная отладка Firewall с PHP

Удаленная отладка Xdebug позволяет вам изучить структуру данных. Есть два различных протоколов для связи с отладчиком: старые GDB-подобный командный протокол (GDB), которая реализуется в Xdebug 1,3 и 2; и DBGp протокол, который реализуется в Xdebug 2.

Клиенты

Xdebug 2 в комплекте с простой клиент командной строки для DBGp протокола. Есть несколько других реализаций клиента (как бесплатные, так и коммерческие).
Я не автор какой-либо из них.

  • Dev-PHP (IDE для Windows)
  • Eclipse плагин , который был представлен в качестве дополнения для PDT (IDE).
  • Emacs плагин (Редактор плагинов).
  • ActiveState, Komodo (IDE: Windows, Linux, Mac, коммерческий).
  • MacGDBP — Автономный клиент для Mac.
  • NetBeans (IDE: Windows, Linux, Mac OS X и Solaris.
  • Notepad + + плагин (Редактор: Windows).
  • Водонепроницаемый в PHPEdit (IDE, начиная с версии 2.10: Windows; коммерческий).
  • MP Software, phpDesigner (IDE: Windows, коммерческий).
  • JetBrain в PhpStorm (IDE, коммерческого).
  • Protoeditor (Редактор: Linux).
  • tsWebeditor (редактор для Windows).
  • XOR над в TrueStudio IDE (IDE, коммерческого).
  • VIM плагин (Учебник) (Редактор плагинов).
  • jcx программного обеспечения VS.Php (MS Visual Studio плагин, коммерческий).
  • XDebugClient — Автономный клиент Windows.

Простой клиент командной строки для GDB протоколом в комплекте с Xdebug 1.3. Клиент реализации устаревших GDB протокола можно найти в бесплатном редакторе WeaverSlave.

Запуск отладчика

Отладку расширения PHP Xdebug имеет «удаленной» отладки возможности для пошагового приложения отладки PHP. Это работает при установленном IDE, это инструктаж Xdebug чтобы начать отладку (с одним из удобных браузеров расширений ). Когда обращаешься к Xdebug она пытается установить соединение с IP-адресом и номером порта, которые настроены в php.ini. На этом IP- адрес и порт Xdebug ищет IDE. Этот IP-адрес может быть просто 127.0.0.1 в случае, если ваш IDE-и веб-сервер / CLI сценарий запуска на одном компьютере. Но, как Xdebug поддерживает удаленную отладку PHP / Xdebug также может быть запущен на совершенно другой машине, чем ваш IDE. В этом случае вам нужно выбрать IP-адрес машины, на которой IDE работает в качестве значения конфигурации для xdebug.remote_host. Также вы можете установить xdebug.remote_connect_back, так что Xdebug может просто забрать IP-адрес клиентской машины из заголовков HTTP.

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

Обход Firewall

Существует еще одно решение, по крайней мере, если у вас есть SSH- доступ к разработке машины, на которой Xdebug работает. В этом случае, вы можете просто в SSH настроить туннель:

SSH-R 9000: локальный: 9000 username@dev.example.com

Эта команда открывает порт 9000 для просмотра на компьютере, где вы ssh-ed into. Каждое сделанное соединение для этого порта будет отправлен localhost: 9000, который в данном случае это порт 9000 на машине, с которой вы запустили SSH команды. Когда вы устанавливаете Xdebug в xdebug.remote_host настройки для локального и xdebug.remote_port к 9000 Вы знаете, есть указание Xdebug для подключения к SSH-туннель связи, которая направляется на локальный порт 9000. И это именно то, где ваш IDE прослушивает входящие соединения отладки. Результат: брандмауэр обойдён.

Если у вас нет возможности использовать Windows на стороне клиента, то вы не сможете использовать простой клиент SSH. Однако, вы можете в настройке туннелей с PuTTY. После настройки обычного сеанса, перейдите на Connection, SSH, Tunnels раздел конфигурации заполнить Source port и Destination, а затем выберите Remote так же, как в этом скриншоте:

настройка туннеля

Затем нажмите кнопку кнопку Добавить, и вы увидите на экране следующее:

настройка туннельного result

Не забудьте вернуться на вкладку Session и нажмите сохранить. Теперь вы готовы к Входу если Вы это сделали туннель SSH будет создан так же, как и в случае с Unix.

Вы можете проверить работает ли это, запустив: netstat -a -n | grep 9000 по строке SSH, после входа Вы должны увидеть:



derick@xdebug:~$ netstat -a -n | grep 9000  tcp  0  0 0.0.0.0:9000  0.0.0.0:*
LISTEN  tcp6       0      0 :::9000      :::*       LISTEN


tcp6 часть не может быть там, все в порядке. Там даже в Windows: обойдён Firewall .

Скачать Xdebug 2.1.2 Дата выхода: 2011-07-28

Запуск отладчика

Для того чтобы отладчик Xdebug, вы должны внести некоторые параметры конфигурации в php.ini. Эти параметры xdebug.remote_enable включить отладчик, xdebug.remote_host и xdebug.remote_port настроить IP-адрес и порт, где отладчик должен подключиться. Если вы хотите отладчик для начала сессии, когда ситуация возникает ошибка (PHP ошибки или исключения), то вам также необходимо изменить xdebug.remote_mode обстановке. Допустимые значения для этого параметра «REQ» (по умолчанию), что делает отладчик начать сессию, как только сценарий будет запущен, или «ТВС», когда сессия должна быть возбуждено только по ошибке.

После сделали все эти настройки Xdebug будет по-прежнему не запускается сеанс отладки автоматически, когда запускается сценарий. Вы должны активировать отладчик Xdebug, и вы можете сделать это тремя способами:

  1. При запуске скрипта из командной строки, вы должны установить переменную окружения, например:


export XDEBUG_CONFIG="idekey=session_name" php myscript.php


Вы также можете настроить
xdebug.remote_host , xdebug.remote_por , xdebug.remote_mode и xdebug.remote_handler в этой же переменной окружения. Все те, настраиваемые параметры можно также установить с нормальной настройки php.ini.

  1. Если вы хотите отладить скрипт запускается с помощью веб-браузера, достаточно просто добавить XDEBUG_SESSION_START = session_name в качестве параметра URL. Обратитесь к разделу , чтобы прочитать о том, как отлаживать работу сессий из окна браузера.
  2. Еще один способ активировать отладчик во время работы PHP через веб-сервер, установив один из следующих трех расширений браузера. Каждый из них позволяет просто включить отладчик, нажав на одну кнопку.

Расширения:

Xdebug для FireFox
Это расширение было построено для Firefox, чтобы сделать отладку с IDE легче. Вы можете найти расширение на https://addons.mozilla.org/en-US/firefox/addon/58688/.

Xdebug Помощника для Chrome
Это расширение для Chrome поможет вам включить / отключить отладку и профилирование с помощью одного клика. Вы можете найти на расширение https://chrome.google.com/extensions/detail/eadndfjplgieldjbigjakmdgkmoaaaoc.

Xdebug Toggler для Safari
Это расширение для Safari позволяет автоматически начать отладку Xdebug из Safari. Вы можете получить это от Github на https://github.com/benmatselby/xdebug-toggler.

Xdebug пусковая установка для оперы
Это расширение для оперы позволяет запускать Xdebug сессию Opera https://addons.opera.com/ru/addons/extensions/details/xdebug-launcher/1.1/?display=en

Перед началом вашего скрипта вы должны сообщить клиенту, что он может получить отладки соединения, пожалуйста, обратитесь к документации по конкретному клиенту о том, как это сделать. Для использования в комплекте клиент просто запустите его после компиляции и установки его. Вы можете начать его, выполнив «debugclient». Если вы хотите использовать GDB commandset для отладки скриптов, убедитесь, что вы используете debugclient в комплекте с 1,3 Xdebug как один в комплекте с Xdebug 2 работает только с commandset DBGp.

Когда debugclient начинается она покажет следующую информацию, а затем ждет, пока соединение инициирует отладку сервера:



Xdebug Simple DBGp client (0.10.0)
Copyright 2002-2007 by Derick Rethans. - libedit support: enabled
Waiting for debug server to connect.


После установления соединения выхода отладки сервера показано на рисунке:



Connect <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" fileuri="file:///home/httpd/www.xdebug.org/html/docs/index.php" language="PHP" protocol_version="1.0" appid="13202" idekey="derick">
<engine version="2.0.0RC4-dev">
<![CDATA[Xdebug]]></engine>
<author><![CDATA[Derick Rethans]]></author>
<url><![CDATA[http://xdebug.org]]></url>
<copyright><![CDATA[Copyright (c) 2002-2007 by Derick Rethans]]></copyright> </init> (cmd)


Теперь вы можете использовать commandset, как описано на DBGp страниц документации. Когда скрипта отладки сервер отключится от клиента и debugclient возобновляется с ожиданием нового соединения.

Настройка связи

При статическом IP / одного разработчика

С удаленной отладки, встроенные в Xdebug PHP работает как клиент, и IDE, что и сервер. Следующая анимация показывает, как канал связи настройки:

Настройка связи
  • IP от сервера 10.0.1.2 с HTTP на 80 порту
  • IDE на IP 10.0.1.42, так xdebug.remote_host установлен 10.0.1.42
  • IDE прослушивает порт 9000, так xdebug.remote_port установлен в 9000
  • Запрос HTTP запущен на машине под управлением IDE
  • Xdebug подключается к 10.0.1.42:9000
  • Отладка работает, ответа HTTP при условии,

С неизвестным IP / несколькими разработчиками

Если xdebug.remote_connect_back используется, настройка несколько отличается:

Настройка связи
  • IP от сервера 10.0.1.2 с HTTP на 80 порту
  • IDE на неизвестный IP, так xdebug.remote_connect_back установлен в 1
  • IDE прослушивает порт 9000, так xdebug.remote_port установлен в 9000
  • Запрос HTTP сделан, Xdebug обнаруживает IP-адреса из заголовков HTTP
  • Xdebug подключается к обнаружена IP (10.0.1.42) на порт 9000
  • Отладка работает, ответа HTTP при условии,

Отладка sessions HTTP

Xdebug содержит функциональные возможности для отслеживания сеанса отладки при запуске через браузер: печенье. Это работает следующим образом:

  • Когда URL переменной XDEBUG_SESSION_START = имя добавляется к URL Xdebug излучает печенья с названием «XDEBUG_SESSION» и в качестве значения значение XDEBUG_SESSION_START параметр URL. Истечения печенья составляет один час. DBGp протокол также проходит этот же значение для инициализации пакета при подключении к debugclient в «idekey» атрибут.
  • Когда есть GET (или POST) переменной XDEBUG_SESSION_START или XDEBUG_SESSION куки установлен, Xdebug будет пытаться подключиться к debugclient.
  • Чтобы остановить сеанс отладки (и уничтожить печенья), просто добавьте параметр URL XDEBUG_SESSION_STOP. Xdebug тогда не попытаться сделать подключение к debugclient.

Отладка нескольких пользователей

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

Если все ваши разработчики работают над различными проектами на тех же (развитие) сервер, вы можете сделать xdebug.xdebug.remote_host настройки для каждого каталога путем. Функциональность сервера Apache Htaccess с помощью php_value xdebug.remote_host = 10.0.0.5 . Тем не менее, в случае, когда несколько разработчиков работают на том же коде,. Htaccess трюк не работает, как каталог, в котором код жизни то же самое.

Есть два пути решения этой. Во-первых, вы можете использовать DBGp прокси . Общие сведения о том, как использовать этот прокси-сервер, обратитесь к статье на Отладка с несколькими пользователями . А во-вторых можно использовать xdebug.xdebug.remote_connect_back установка , которая была введена в Xdebug 2.1.

Связанные Настройки

xdebug.extended_info

Тип: integer , по умолчанию: 1

Определяет, будет ли Xdebug следует обеспечить extended_info режим для PHP парсер, что позволяет сделать Xdebug файла / линии точек останова с удаленного отладчика. При трассировке или профилированию скриптов вы вообще хотите отключить эту опцию, как PHP, полученная по oparrays увеличится с примерно треть размера замедляя работу скриптов. Эта установка не может быть установлена ​​в сценарии с помощью ini_set () , но только в php.ini.


xdebug.idekey

Тип: string , Значение по умолчанию: *комплекс*

Контролирует, какие IDE Основные Xdebug должны передать в обработчик отладчика DBGp. Умолчанию основывается на параметрах среды.Первая среда настройки DBGP_IDEKEY проводятся консультации, то пользователь и как и в прошлом USERNAME. Умолчанию настроен на первую переменную среды, которая не будет найден. Если никто не мог найти настройка по умолчанию».


xdebug.remote_autostart

Тип: boolean , Значение по умолчанию: 0

Как правило, вы должны использовать конкретные HTTP GET / POST переменных, чтобы начать удаленной отладки (см. удаленной отладки ).Если этот параметр установлен в 1, Xdebug всегда будет попытка начать сеанс удаленной отладки и попытаться подключиться к клиенту, даже если GET / POST / COOKIE переменной не присутствовал.


xdebug.remote_connect_back

Тип: boolean , Значение по умолчанию: 0, введенный в Xdebug 2,1

Если включено, xdebug.remote_host параметр не учитывается и Xdebug будет пытаться подключиться к клиенту, сделавшему HTTP-запроса. Он проверяет, $ _SERVER ['REMOTE_ADDR'] переменную чтобы выяснить, какие IP-адрес. Пожалуйста, обратите внимание, что нет никакой фильтр доступен, и любой, кто может подключиться к веб-сервер сможет начать сеанс отладки, даже если их адрес не соответствует xdebug.remote_host.


xdebug.remote_cookie_expire_time

Тип: integer , по умолчанию: 3600, введенный в Xdebug 2,1
Эта установка может быть использована для увеличения (или снижения) время сеанса удаленной отладки остается в живых через куки сессии.


xdebug.remote_enable

Тип: boolean , Значение по умолчанию: 0

Этот параметр определяет, будет ли Xdebug должны попытаться связаться отладки клиент, который слушает на хост и порт, что набор с настройками xdebug.remote_host и xdebug.remote_port. Если соединение не может быть создан сценарий просто будет продолжать, как если бы этот параметр был 0.


xdebug.remote_handler

Тип: string , Значение по умолчанию:

dbgp Может быть php3 , который выбирает старые PHP 3 стиля отладчики выход, GDB , которая позволяет GDB как отладчик интерфейса или dbgp — отладчик протокола. Протокол DBGp более широкую поддержку со стороны клиентов. Посмотреть более подробную информацию в введение для удаленной отладки .

Xdebug 2.1 и более поздних версий поддерживает dbgp , как протокол.


xdebug.remote_host

Тип: string , Значение по умолчанию: локальный

Выбор хоста, на котором отладочный клиент работает, вы можете использовать имя хоста или IP-адрес. Этот параметр игнорируется, если xdebug.remote_connect_back включена.


xdebug.remote_log

Тип: string , Значение по умолчанию:

Если установлено значение, оно используется как имя файла для файла, в котором все удаленные сообщения отладчика заносятся в журнал.Файл всегда открывается в режиме добавления, и поэтому не могут быть перезаписаны по умолчанию. Существует нет параллелизма защиту. Формат файла выглядит примерно так:



 Log opened at 2007-05-27 14:28:15->

  "


xdebug.remote_mode

Тип: string , Значение по умолчанию:

REQ Выбор при отладке соединение инициировано. Этот параметр может иметь два различных значения:

REQ

Xdebug будет пытаться подключиться к отладке клиента, как только скрипт начинает.

JIT

Xdebug только пытаются подключиться к отладке клиента, как только ошибка происходит.


xdebug.remote_port

Тип: integer , по умолчанию:

9000 Порт, к которому Xdebug пытается подключиться на удаленном хосте. Порт 9000 используется по умолчанию как для клиента, и в комплекте debugclient. Как и многие клиенты используют этот номер порта, то лучше оставить этот параметр без изменений.


Связанные функции

bool xdebug_break ()

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML -теги и атрибуты: <a href= http://www.pixelcom.crimea.ua/"" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>