Ответы пользователя по тегу Xdebug
  • Как подружить Windows 10 + Docker + PhpStorm + Xdebug?

    @MadridianFox
    Web-программист, многостаночник
    Я для себя определил универсальный подход для отладки в любом сетевом окружении.
    В простейшем случае, когда разработчик один, а сервер за NAT, надо на сервер прокинуть порт через ssh.
    ssh user@host -R 9000 localhost:9000
    При этом в php.ini xdebug надо настроить чтобы он коннектился на localhost:9000.

    Когда разработчиков много, я использую модифицированный dbgp прокси.
    https://github.com/MadridianFox/php-xdebug-proxy
    Если он стоит на том же сервере что и php, настройки xdebug те же. Прокси слушает 9000 порт. Каждый разработчик выбирает себе уникальный порт и прокидывает его по ssh на сервер. Так же надо обратно прокинуть 9001 порт чтобы зарегистрировать свой idekey в прокси.
    ssh user@host -R 9002 localhost:9002 -L 9001 localhost:9001

    И самое главное - при регистрации своего idekey через шторм в поле idekey надо написать myidekey:9002
    В этом же окне порт прокси - 9001, хост прокси - localhost.

    В настройках шторма указываем что для отладки надо слушать 9002 порт.

    В браузере, не важно, используете вы расширение или прописываете XDEBUG_SESSION_START, надо указать myidekey без порта!

    В случае с докером вы можете либо добавить ssh сервер в контейнер с самим php, либо поднять дополнительный ssh контейнер. При единоличной разработке этого достаточно. Просто в зависимости от размещения ssh прописываете разные хосты в xdebug. Прокидывает туда порт.

    Если разработчиков больше одного - выделяете контейнер с ssh + dbgp прокси и каждый разработчик прокидывает туда свой порт.
    Ответ написан
    Комментировать
  • Xdebug remote server, phpstorm?

    @MadridianFox
    Web-программист, многостаночник
    Тут надо поиграться с настройками xdebug в php.ini. Надо:
    • Включить постоятнную отладку (не по триггеру)
    • Задать статический ip компьютера разработчика (а не connect_back)

    Ну и я думаю можно как-нибудь настроить phpStorm чтобы он игнорировал все отладочные подключения кроме нужного вам файла.
    Останется только ждать, когда кто-то зайдёт на нужную вам страницу.
    Но это будет странно, т.к. реальный пользователь столкнётся с тем, что сайт - хоп, и перестал грузиться т.к. шторм, поймав отладочное соединение пошлёт в него брейкпоинт.

    Однако. Это странно, причём вдвойне.
    Во-первых, сайт должен быть в двух экземплярах - один для разработки и один для пользователей. Тот, который для пользователей не должен иметь xdebug, т.к. он серьёзно влияет на производительность.
    Во-вторых, дебажить запросы от пользователей? Что? Зачем?
    Ответ написан