За последние 24 часа нас посетили 20224 программиста и 1611 роботов. Сейчас ищут 803 программиста ...

PHPstorm: как настроить отладку c XDebug на remote server?

Тема в разделе "PHP для новичков", создана пользователем Konst3, 28 май 2018.

Метки:
  1. Konst3

    Konst3 Новичок

    С нами с:
    28 май 2018
    Сообщения:
    5
    Симпатии:
    2
    Господа, я сегодня с семи утра конфигурирую отладку в PHPstorm
    (при помощи XDebug) и уже слегка утомился.
    И название "Zero-configuration Web Application Debugging with Xdebug and PhpStorm" звучит уже очень иронично.
    Я натыкаюсь на какую то стену, и не могу продвинуться дальше.
    Смотрите.
    я хочу отлаживаться на удаленном сервере (локальный адрес - 192.168.10.48, там установлены Ubuntu 16.04, PHP 7.0, WordPress)
    а я сижу за компом с десятой виндой и коннекчусь по SSH.
    Я прочитал описание
    https://confluence.jetbrains.com/di...pplication+Debugging+with+Xdebug+and+PhpStorm
    и вот такую статью:
    https://m.habr.com/post/209024/
    Потом я по этому описанию настроил - и всё выглядело логично, чёрт побери.
    Всякие вадидейшены в настройках remote server - проходят.
    Но отладка не идёт, появляется сообщение:
    "Waiting for incoming connections with ide key 'PHPSTORM'":
    [​IMG]

    Вот отрывок из PHPinfo:
    [​IMG]

    Вот основные настройки (3 картинки, я убрал их под спойлер):
    [​IMG]

    [​IMG]

    [​IMG]


    Раздел DBGproxy я не настраивал, потому что не понимаю что это такое и зачем оно нужно.

    Вот файл конфигурации /etc/php/7.0/apache2/conf.d/20-xdebug.ini:
    zend_extension=xdebug.so
    xdebug.default_enable=1
    xdebug.remote_enable=1
    xdebug.show_error_trace=1
    xdebug.remote_handler="dbgp"
    xdebug.remote_host=192.168.10.53
    xdebug.idekey="PHPSTORM"
    xdebug.remote_mode=req
    xdebug.remote_port=9000
    xdebug.remote_connect_back=1



    В результате при запуске дебага на файле (когда нажимаю "зеленого жука" и устанавлдливаю точки останова) я получаю в одном из окошек сообщение
    "Waiting for incoming connections with ide key 'PHPSTORM'"
    При этом порт 9000 открыт, на линуксовом файерволе никаких запретов нет.
    И телнетом я коннекчусь нормально с линукса на виндовс.

    я читаю описание протокола отладки
    https://xdebug.org/docs-dbgp.php#just-in-time-debugging-and-debugger-proxies
    и пока не могу понять, в какую сторону копать дальше.

    Помогите советом, я уверен, что я сделал правильно 80% настройки и чегото не понимаю в оставшихся 20%.
    Спасибо заранее.
     
  2. Konst3

    Konst3 Новичок

    С нами с:
    28 май 2018
    Сообщения:
    5
    Симпатии:
    2
    Спапсибо, парни, но я уже разобрался.
    Модераторы у вас... очень осторожные, наверное.
    Мне помог человек из JetBrains, Eugene Morozov.
    Его совет сотоял в том, что "На самом деле, почти все настройки находятся на стороне Xdebug, в PhpStorm вам нужно настроить только маппинги когда коннекшн уже пришёл."
    Сейчас я значительно продвинулся, у меня есть построчная отладка, и я могу расставить точки останова на серверной стороне,
    а потом запустить код в браузере - и попасть в одну из этих точек останова.
    Могу привести свою конфигурацию файла /etc/php/7.0/apache2/conf.d/20-xdebug.ini:

    zend_extension=/usr/lib/php/20151012/xdebug.so
    xdebug.default_enable=1
    xdebug.remote_enable=1
    xdebug.show_error_trace=1
    xdebug.remote_handler="dbgp"
    xdebug.remote_host=192.168.10.53
    xdebug.idekey="PHPSTORM"
    xdebug.remote_mode=req
    xdebug.remote_port=9000
    xdebug.remote_connect_back=1
    xdebug.trace_format = 1
    xdebug.trace_output_dir = /var/www/xdebug/log
    xdebug.extended_info = 1
    xdebug.remote_autostart = 1
    xdebug.remote_log = /var/www/xdebug/log/access.log

    А еще - мне помогла статья
    https://habr.com/sandbox/20485/
     
    artoodetoo нравится это.
  3. serii366

    serii366 Новичок

    С нами с:
    16 мар 2018
    Сообщения:
    4
    Симпатии:
    1
    Я так рад за вас.
    А вы не поможете и мне настроить, а то у меня тоже дым из ушей валит и не могу разобраться.
    На локальном хостинге работает, а вот с удаленкой проблемы.
     
  4. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.569
    Симпатии:
    1.757
    @serii366, так он же конфиг привёл :)
    @Konst3, только remote_autostart замедляет работу скриптов на сервере. Без него тоже можно отлаживать, всего лишь нужно для начала отладки добавить ?XDEBUG_SESSION_START=PHPSTORM в адресную строку.
    --- Добавлено ---
    Тут главное, в принципе, туннелирование настроить. Каким SSH-клиентом пользуетесь?
     
  5. Konst3

    Konst3 Новичок

    С нами с:
    28 май 2018
    Сообщения:
    5
    Симпатии:
    2
    Привет всем.
    я прошу прощения, с тех пор прошел почти год, как я этой темой не занимался. Думаю, что сейчас могу помочь только общими советами.
    0) обычно полезно сконфигурировать сервер для отладки с нуля. При этом как то думаешь головой, что и как ставить, и иногда проблема решается в процессе.
    1) Надо проверить, как просиходит авторизация на сервере, на котором Вы пытаетесь настроить отладку: некоторые хостинги поддерживают для внешних коннектов только авторизацию по ключам.
    2) для полноты картины - напишите, с кикими OS вы работаете на дектопе и на сервере (мне всегда приходится работатьс комбинацией винды на десктопе и убунты на сервере, что создает дополнительный слой несовместимости. К счастью, JetBrains-овские продукты прекрасно поддерживают и то, и другое)
    Если это чему то поможет - я могу попробовать разыскать образ виртуалки, на которой у меня был настроен дебаг. Тогда напишите отдельно. Веротяность найти - 50 на 50, как обычно :)
    --- Добавлено ---
    ... в продолжение "советов постороннего":

    нарисуйте (или представьте в деталях) схему сетевого взаимодействия при отладке:
    среда разработки должна обратиться к внешнему серверу, на котором запускается скрипт, а при этом от этого сервера XDebug инициирует соединение снаружи со средой разработки на десктопе.

    На десктоп-винде есть два врага разработчика: антивирусы и файерволы. И то, и другое будет молча и активно сопротивляться попыткам XDebug'а снаружи приконнектиться к воркстейшн.

    Вырубите, а лучше - снесите с рабочей машины и антивирус, и файервол.