Pull to refresh

Comments 10

Давно пользуюсь docker образами c xdebug, настройка занимает очень мало времени.

discover_client_host очевидно, не сработает, если у Вас серый IP. Схема работы xDebug проста и очевидна, но бывает, что люди про неё не читали и предполагают какую-то магию. Поэтому коротко приведу её для варианта web отладки:

  1. Вы инициируете в IDE сессию отладки

  2. IDE начинает слушать входящие соединения на заданном порту ( по дефолту 9003)

  3. IDE отправляет обычный HTTP запрос на целевой хост

  4. на хосте при обработке PHP кода xDebug инициирует исходящее соединение на заданный порт.

Поэтому важно, чтобы либо хост в пунктах 2 и 4 совпадал, либо между хостами должно быть какое-то соединение ( например, обратный ssh туннель, как в статье ). Иначе получается так, что PHPStorm при проверке удалённой отладки ( есть там кнопочка) говорит, что всё хорошо, но отладка не работает.

Когда у Вас серый IP, а отладку Вы хотите провести на удалённом сервере, где PHP запущен в Docker контейнере, заставить всё это работать непросто.

Ещё несколько лет назад много раз пытался настроить XDebug в PHPStorm для Laravel под Ubuntu, но никак не получалось, хотя следовал всем гайдам и пробовал бесконечное количество разных вариантов. Много раз брался за эту задачу и много раз бросал, потому что ничего не получалось. Спустя какое-то время сел разбираться в очередной раз, тогда-то и почти случайно и выяснил, что проблема была в файрволле, - надо было открыть 9000 и/или 9003 порты, после чего всё заработало. И в этом гайде про такую проблему тоже ничего не сказано, так что имейте в виду.

Всегда использую докер. Поднимаю отдельными контейнерами nginx, php, bd, composer, artisan. Xdebug приходится настраивать по используемую версию php. Где-то только дебагер, а где-то нужно и профайлер добавить. Тут нет ничего сложного. Один раз настроить и пользоваться.

А зачем composer и artisan (Laravel Artisan?) в отдельных контейнерах?

Предположу, что бывает удобно для выполнения cli-скриптов иметь отдельные контейнеры с php-cli с конфигурацией, сильно отличающейся от "боевых" php-fpm.

Расширение для браузера тоже необязательно. Ещё 8 лет назад у меня закралась мысль, что оно ничего не делает, и я его снёс, и всё работает. Надо поставить start_with_request=yes, а в шторме нажать кнопку, которая слушает входящие соединения. Будет ловить из всех браузеров, из постмана и т.д.

Расширение (если мы говорим про то, которое включает нужную Куку) полезно тем, что оно включает дебаг только при необходимости.

Надо поставить start_with_request=yes

Эта команда включает дебаг при любом запросе. Это стоит ресурсов сервера. Кроме того, злоумышленник можно зайти и попросить сервер отправить ему весь дебаг (в том числе данные подключения к базе данных итд). Поэтому используйте дебаг с осторожностью.

Расширение (если мы говорим про то, которое включает нужную Куку) полезно тем, что оно включает дебаг только при необходимости.

Надо поставить start_with_request=yes

Эта команда включает дебаг при любом запросе. Это стоит ресурсов сервера. Кроме того, злоумышленник можно зайти и попросить сервер отправить ему весь дебаг (в том числе данные подключения к базе данных итд). Поэтому используйте дебаг с осторожностью.

Sign up to leave a comment.

Articles