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

youtube.com/watch?v=7hFivbgIEqk

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

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