Comments 10
Давно пользуюсь docker образами c xdebug, настройка занимает очень мало времени.
discover_client_host очевидно, не сработает, если у Вас серый IP. Схема работы xDebug проста и очевидна, но бывает, что люди про неё не читали и предполагают какую-то магию. Поэтому коротко приведу её для варианта web отладки:
Вы инициируете в IDE сессию отладки
IDE начинает слушать входящие соединения на заданном порту ( по дефолту 9003)
IDE отправляет обычный HTTP запрос на целевой хост
на хосте при обработке PHP кода xDebug инициирует исходящее соединение на заданный порт.
Поэтому важно, чтобы либо хост в пунктах 2 и 4 совпадал, либо между хостами должно быть какое-то соединение ( например, обратный ssh туннель, как в статье ). Иначе получается так, что PHPStorm при проверке удалённой отладки ( есть там кнопочка) говорит, что всё хорошо, но отладка не работает.
Когда у Вас серый IP, а отладку Вы хотите провести на удалённом сервере, где PHP запущен в Docker контейнере, заставить всё это работать непросто.
Ещё несколько лет назад много раз пытался настроить XDebug в PHPStorm для Laravel под Ubuntu, но никак не получалось, хотя следовал всем гайдам и пробовал бесконечное количество разных вариантов. Много раз брался за эту задачу и много раз бросал, потому что ничего не получалось. Спустя какое-то время сел разбираться в очередной раз, тогда-то и почти случайно и выяснил, что проблема была в файрволле, - надо было открыть 9000 и/или 9003 порты, после чего всё заработало. И в этом гайде про такую проблему тоже ничего не сказано, так что имейте в виду.
Всегда использую докер. Поднимаю отдельными контейнерами nginx, php, bd, composer, artisan. Xdebug приходится настраивать по используемую версию php. Где-то только дебагер, а где-то нужно и профайлер добавить. Тут нет ничего сложного. Один раз настроить и пользоваться.
Расширение для браузера тоже необязательно. Ещё 8 лет назад у меня закралась мысль, что оно ничего не делает, и я его снёс, и всё работает. Надо поставить start_with_request=yes, а в шторме нажать кнопку, которая слушает входящие соединения. Будет ловить из всех браузеров, из постмана и т.д.
Расширение (если мы говорим про то, которое включает нужную Куку) полезно тем, что оно включает дебаг только при необходимости.
Надо поставить start_with_request=yes
Эта команда включает дебаг при любом запросе. Это стоит ресурсов сервера. Кроме того, злоумышленник можно зайти и попросить сервер отправить ему весь дебаг (в том числе данные подключения к базе данных итд). Поэтому используйте дебаг с осторожностью.
Расширение (если мы говорим про то, которое включает нужную Куку) полезно тем, что оно включает дебаг только при необходимости.
Надо поставить start_with_request=yes
Эта команда включает дебаг при любом запросе. Это стоит ресурсов сервера. Кроме того, злоумышленник можно зайти и попросить сервер отправить ему весь дебаг (в том числе данные подключения к базе данных итд). Поэтому используйте дебаг с осторожностью.
Настраивать xdebug для первого запуска не нужно вообще! Как в Phpstorm запустить отладку за минуту и без браузера