xdebug на удаленном сервере

Хочу рассказать, в чем соль работы xdebug на удаленном сервере. И сразу скажу, с локальными виртуальными машинами все будет работать отлично, а вот с удаленной машиной скорее всего нет (видимо из-за больших пингов).

Для тех, кто не в курсе, как работает xdebug, то советую почитать статью - xdebug под микроскопом

Однако, если запрос (шаг 1) идет с удаленного IP ($_SERVER['REMOTE_HOST'] != IP на котором запущен xdebug), то xdebug будет игнорировать подключение (шаг 4 не будет выполнен). Чтобы шаг 4 выполнялся, в xdebug есть параметр:

; это заставляет xdebug игнорировать настройку xdebug.remote_host
xdebug.remote_connect_back=1

не забудьте ребутнуть апач (или php-fpm).

Если listener слушает, но на брэйкпоинтах остановка не происходит, то проверь в xdebug.ini такие настройки:

xdebug.remote_port = 9089
xdebug.remote_enable = 1
xdebug.remote_log = /tmp/xdebug.log

Например я вспомнил, что у меня listener слушает порт 9089.

Но мне это не помогло, а помогли логи из файла /tmp/xdebug.log:

# tail -f /tmp/xdebug.log
Log opened at 2014-12-20 09:56:36
I: Checking remote connect back address.
I: Remote address found, connecting to 95.25.48.115:9089.
E: Time-out connecting to client. :-(
Log closed at 2014-12-20 09:56:36

А ведь правильно, я сижу за роутером, и по-умолчанию роутер не пропускает, поэтому xdebug не может подключиться к моему ноутбуку.

xdebug на удаленном сервере

Но увы, даже после того, как подключение с удаленным сервером было успешно выполнено, IDE не смогла нормально взаимодействовать - дебагер в IDE молчал. И только по логам /tmp/xdebug.log было видно, что подключение состоялось и обмен данными с тормозами, но идет:

Log opened at 2014-12-20 16:27:52
I: Checking remote connect back address.
I: Remote address found, connecting to 95.25.48.115:9089.
I: Connected to client. :-)
-> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" fileuri="file...

Debug из удаленной консоли

1. Нужно сконфигурировать IDE, а именно, указать хости и маппинг файлов:

xdebug на удаленном сервере

как видите, sync-lc это имя проекта, которое нужно будет указывать в консоле:

PHP_IDE_CONFIG="serverName=sync-lc" php -dxdebug.remote_host=192.168.12.345 ./project/file.php

-dxdebug.remote_host= - это настройка для xdebug-а, которую так же можно задать в php.ini или с помощью environment-переменной: XDEBUG_CONFIG="remote_host=YOUR_IP_ADDRESS"

192.168.12.345 - адрес, к которому будет коннектится xdebug (в моем случае это IP адрес моей хост-машины с Windows).

Если что-то не выходит, используйте xdebug-настройку:

xdebug.remote_log="/tmp/xdebug.log"

в котором в случае проблем, будет написано что-то вроде этого:

Log opened at 2017-10-11 12:32:10
I: Checking remote connect back address.
I: Checking header 'HTTP_X_FORWARDED_FOR'.
I: Checking header 'REMOTE_ADDR'.
W: Remote address not found

Если что, см. документацию, удачки!

По мотивам: 1 - 2

Оцени публикацию:
  • 1,5
Оценили человек: 1

Похожие статьи:


Предложения и пожелания:
Ваше имя:
Ваш E-mail:
Сколько будет Οдин + Τри
Главная
X

Новые заметки:

Про что мы забываем когда делаем оценку задачи по времени

Список вопросов для собеседования разработчика по телефону

Symfony2 авторизация без Doctrine2 для чайника

Phpstorm7 LiveEdit

Жесткий хабр или не хабр, тогда кто?

Яндекс.Деньги мошенничество

Как узнать какие страницы в поиске яндекса или это секрет

Последние комменты:

Yapro CMS:

Здравствуйте, Гость | Войти | Регистрация | Карта сайта | RSS ленты | Ошибка в тексте? Выделите её мышкой и нажмите: Ctrl + Enter

youtube.com/watch?v=7hFivbgIEqk

При полном или частичном использовании материалов данного сайта, ссылка на сайт "yapro.ru" обязательна как на источник информации.
Автоматический импорт материалов и информации с сайта запрещен.
Copyrights © 2007 - 2018 YaPro.Ru

Главная » Веб-мастеру » Unix »