В то время, когда я задал вопрос, я неправильно понял, как работает протокол, и прокси-сервер не является строго необходимым.
XDebug (и DBGP протокол ) инициирует соединение отсервер обратно к клиенту на основе настроенного IP-адреса или (недавно, но не рекомендуется) IP-адрес клиента.
Это поведение можно активировать одним из двух способов:
- Добавление
?XDEBUG_SESSION_START=<something>
к URL-адресу - Установка файла cookie "XDEBUG_SESSION" на
<something>
Хотя между браузером и клиентом может быть установлен HTTP-прокси, который вставляет одиниз них (или плагин для браузера, чтобы сделать это), для меня было более подходящим решением использовать mod_rewrite на сервере.
RewriteEngine On
RewriteCond %{HTTP_COOKIE} !XDEBUG_SESSION [NC]
RewriteRule ^(.*)$ $1?XDEBUG_SESSION_START=mod_rewrite [QSA,L]
Поскольку mod_rewrite обычно работает для каждого виртуального хоста, это необходимо включить на каждомvirtualhost.
Кажется, что имя сеанса не имеет большого значения для NetBeans (другие IDE могут отличаться), но может стоить изменить мое значение mod_rewrite на то, что генерирует ваша IDE.Это вряд ли сработает, если используется прокси-сервер DBGP, поскольку нет простого способа связать информацию о сеансе IDE с правилом перезаписи.
Тем не менее, большое преимущество использования mod_rewrite вместо перехвата запросов с проксизаключается в том, что это позволяет отлаживать обе стороны вызова RPC (хотя вопрос о том, нравится ли одному отладчику несколько одновременных подключений, является другой проблемой).
Было бы неплохо иметь прокси-сервер DBGP, который управляет потоками с отдельных серверов с помощьюдобавление имени сервера в поле потока в пакетах инициализации , но, поскольку я еще не использовал отладчик, который поддерживает несколько потоков / серверов для PHP, это спорный вопрос.