Хочу рассказать, в чем соль работы xdebug на удаленном сервере. И сразу скажу, с локальными виртуальными машинами все будет работать отлично, а вот с удаленной машиной скорее всего нет (видимо из-за больших пингов).
Напоминаю, xdebug ищет Ваш IP в $_SERVER['HTTP_X_FORWARDED_FOR'] and $_SERVER['REMOTE_ADDR']. Для тех, кто не в курсе, как работает 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 не может подключиться к моему ноутбуку.

Но увы, даже после того, как подключение с удаленным сервером было успешно выполнено, 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...
1. Нужно сконфигурировать IDE, а именно, указать хости и маппинг файлов:

как видите, 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
Если что, см. документацию, удачки!
Комментарии
Комментариев пока нет.