Xdebug представляет собой расширение PHP, предназначенное для отладки и профилирования PHP-скриптов. Его использование позволяет повысить эффективность разработчика за счёт ускорения процесса получения отладочной информации. Разработчик сможет быстрее определить причину ошибки, сможет быстрее понять логику работы незнакомого куска кода.

В данной статье речь пойдёт о том, как настроить отладку в PhpStorm на основе Xdebug, если проект расположен на удалённом сервере, а не развёрнут локально на машине разработчика. Приведу минимальный список шагов, который необходим для начала отладки, без углублённого изучения обширного функционала отладки PhpStorm.

 

Шаг первый

Устанавливаем и включаем расширение Xdebug для PHP в соответствии с документацией.

Добавляем настройки в конфигурационный файл (xdebug.ini). Смотрим описание параметров при необходимости.

xdebug.remote_enable=1
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.profiler_enable=0
xdebug.profiler_output_dir=/tmp
xdebug.profiler_output_name="debug-cachegrind.out"
xdebug.profiler_append=1
xdebug.profiler_enable_trigger=1

 

Шаг второй

Устанавливаем расширение для браузера. Оно необязательно и нужно лишь для упрощения активации отладчика. Если не использовать расширение, понадобится вручную задать GET/POST или COOKIE параметр.

 

Шаг третий

Настраиваем SSH-туннель к удалённому серверу с помощью командной строки на локальной машине.

ssh -R 9000:localhost:9000 <username>@<host> -p <port>

 

Шаг четвёртый

Создаём проект в PhpStorm, если он ещё не создан. При этом необязательно выгружать на локальную машину всю кодовую базу проекта - можно загрузить только те файлы, которые нужны для отладки. Конечно, со всей кодовой базой будет гораздо удобнее.

В панели инструментов жмём на кнопку Start Listening for PHP Debug Connections, чтобы PhpStorm начал обрабатывать входящие соединения от Xdebug. Данный функционал также можно включить через главное меню Run | Start Listening for PHP Debug Connections. Повторное нажатие кнопки вернёт всё как было.

 

Шаг пятый

Задаём точку останова, активируем отладчик (с помощью параметра или расширения) и открываем в браузере страницу для отладки. Если PhpStorm смог автоматически определить соответствие файлов локального проекта с файлами на удалённом сервере, то сразу будет открыто окно отладки. В противном случае (например, если нужный файл отсутствует на локальной машине) PhpStorm предложит задать соответствие вручную, предложив наиболее подходящие варианты.

На этом настройка завершена. В заключение несколько замечаний:

    В документации PhpStorm имеется большой раздел, посвящённый настройке функционала отладки. Он будет полезен при возникновении трудностей. В PhpStorm кроме поддержки Xdebug имеется поддержка Zend Debugger. Для проверки того, что SSH-туннель работает, а Xdebug присылает отладочную информацию, можно использовать клиент для командной строки. При наличии проблемы это поможет определить правильность настройки, исключая фактор IDE. Если вы столкнулись с ошибкой "Cannot accept external Xdebug connection: Cannot evaluate expression 'isset($_SERVER['PHP_IDE_CONFIG'])'", то это может свидетельствовать о множестве причин. В моём случае были одновременно включены Xdebug и Zend Debugger. Отключение Zend Debugger решило проблему.

Добавить комментарий