Использовали ли Xdebug для отладки PHP
Что проверяют
Умеете ли вы отлаживать код пошагово, а не через var_dump() и die(), и сможете ли сами настроить окружение. Следом почти всегда спрашивают, как вы подключали Xdebug в Docker и чем третья версия отличается от второй.
Как отвечать
Начните с личного опыта: в какой IDE, в каком окружении и какую проблему это помогло найти. Если в работе Xdebug не использовали, скажите прямо, опишите, как отлаживаете сейчас, и до собеседования один раз настройте его на своём проекте. Технический каркас:
- режимы Xdebug 3: всё включается настройкой
xdebug.mode.debugдля пошаговой отладки,developдля расширенных ошибок иvar_dump,profileдля профилирования,traceдля трассировки вызовов,coverageдля покрытия в PHPUnit. Режимы комбинируются через запятую,offвыключает всё; - запуск сессии:
xdebug.start_with_request=triggerплюс триггерXDEBUG_TRIGGERв cookie, GET-параметре или переменной окружения. Cookie ставит браузерное расширение, для CLI хватитXDEBUG_MODE=debug XDEBUG_SESSION=1 php script.php; - подключение к IDE: Xdebug сам стучится в IDE по
xdebug.client_hostи порту 9003 (во второй версии был 9000). В Docker хост обычноhost.docker.internal, а в PhpStorm нужны path mappings между путями контейнера и проекта; - что даёт отладка: условные точки останова, стек и переменные, вычисление выражений на лету, остановка на исключении;
- профилирование: файлы cachegrind открываются в PhpStorm, KCachegrind или QCacheGrind и показывают, где уходит время.
Для диагностики настройки есть xdebug_info(): активные режимы и лог попыток подключения.
Где спотыкаются
Переносят настройки второй версии: xdebug.remote_enable, remote_port и remote_autostart в Xdebug 3 не работают, и отладчик молча не подключается.
Включают start_with_request=yes вместе с debug для всего подряд. Каждый запрос пытается соединиться с IDE, и окружение заметно тормозит.
Оставляют расширение в продовом образе. Даже с xdebug.mode=off на проде ему не место, а для покрытия в CI часто быстрее PCOV.