Удаленная отладка php с помощью Xdebug

Удаленная отладка php с помощью Xdebug

Отладка php на удаленном сервере актуальное для web разработчика умение, так как без него практически невозможно корректно и быстро находить проблемные места в коде php-скриптов. И если с дибаггингом php кода на "удаленном сервере" работающем на локальной машине в рамках VirtualBox или OpenServer все прозрачно и понятно, то что делать с сайтами расположенными не на компьютере девелопера? Например, в облаке (cloud/клауде)? Давайте рассмотрим этот вопрос более подробно с использованием PhpStorm.

Итак, мы имеем веб сервер LAMP развернутый с помощью панели VestCP  и расположенный не на компьютере web программиста, а где-то "далеко-далеко", то есть это: не Docker, не Vagrant, не VirtualBox и не OpenServer.

Чтобы все "взлетело", нам необходимы следующие условия:

  • на сервере установлен Xdebug
  • у нас есть доступ по ssh
  • xdebug подключен в php.ini

Остановимся и уточним: xdebug должен быть подключен в php.ini для Apache! В рамках VestaCP файл php.ini может быть, как минимум, в трех местах:

  • /etc/php/7.2/cli/php.ini
  • /etc/php/7.2/apache2/php.ini
  • /etc/php/7.2/cgi/php.ini

Нам нужно прописать условия использования xdebug конкретно в файле /etc/php/7.2/apache2/php.ini

Само подключение в конце php.ini файла крайне простое, незамысловатое и содержит всего 4 строки:

[xdebug]
zend_extension="/usr/lib/php/20170718/xdebug.so"
xdebug.remote_enable = 1
xdebug.remote_port = 9000
xdebug.remote_host = "127.0.0.1"

В работе с отладкой php кода на не локальном сервере есть одна тонкость: на этот сервер необходимо пробросить ssh-тонель, для определенного пользователя и на определенные порты. Без этого тоннеля у вас ничего не получится! Хотя на том же OpenServer вам ssh-тоннель не нужен.

Пробрасывать тоннель не очень сложно, хотя для работающих на Windows позамороченнее: им придется использовать putty. Ну а для линуксоидов проброс тоннеля между удаленным сервером и локальной машиной выглядит вот так:

ssh -R 9000:localhost:9000 USER@SERVER-IP

Итак, xdebug на сервере установлен, в php.ini условия его использования прописаны, тоннель на удаленный сервер с машины разработчика проброшен. Осталось только настроить PhpStorm и шагов будет всего два:

  1. Подключение удаленного интерпретатора php
  2. Создание конфигурации PHP Remote Debug

Настройка удаленного php интерпретатора в PhpStorm

Создание PHP Remote Debug в PhpStorm

На этом все. Включаете в вашем браузере зеленую жукабру Xdebug helper, устанавливаете точки останова breakpoint и можете отлаживать свой сайт.