Будет кратко описана установка xdebug, настройка php.ini и phpstorm, а также использование xDebug на linux в связке с phpstorm и vagrant.
Установка xDebug
Ставим xdegub на виртуальную машину, предварительно подключившись к ней по ssh через vagrant (vagrant ssh
). Команда для установки xdebug:
sudo apt-get install -y php5-xdebug
При установленном xdеbug информация о нём будет присутствовать в php.ini, проверим, так ли это:
$ php -r "var_dump(phpinfo());" | grep xdebug /etc/php5/cli/conf.d/20-xdebug.ini xdebug xdebug support => enabled xdebug.auto_trace => Off => Off xdebug.cli_color => 0 => 0 xdebug.collect_assignments => Off => Off xdebug.collect_includes => On => On ...
Настройка xDebug php.ini
Host, port и идентификационный номер нужно прописать одинаковые и в настройках php.ini, и в настройках phpstorm.
sudo vim /etc/php5/cli/conf.d/20-xdebug.ini
Конфиг /etc/php5/cli/conf.d/20-xdebug.ini инклудится в php.ini. Поэтому добавляем в этот файл следующие настройки для xdebug (они будут задействованя как для php cli так и для fpm):
xdebug.remote_autostart = on xdebug.remote_enable = on xdebug.remote_connect_back = on xdebug.remote_host = 192.168.15.1 xdebug.remote_port = 9003 xdebug.remote_handler = dbgp xdebug.idekey = wi-backend
Где:
- xdebug.remote_autostart — самая важная строка, отвечает за autostart.
-
remote_ host — это реальный Ethernet ip вашей машины (посмотреть можно в
ifconfig
- vboxnet0) - remote_port — задаём так же как и в настройках IDE
- xdebug.idekey — такое же название как и в IDE.
Настройка xDebug phpstorm
Открываем меню File -> Settings.
Настраиваем PHP -> Servers.
Настраиваем как на скриншоте, задавая своё имя для приложения. Там где vagrant path - указываем путь до проекта внутри виртуальной машины vagrant. Путь может как совпадать с путём на основной машине, так может и отличаться и монтироваться в другую папку.
Настраиваем DBGp proxy
Тут всё должно быть понятно, указываем IDE key и Port такие же, как задали в php.ini. В качестве Host указываем ip виртуальной машины, тот что в файле Vagrantfile.
Использование xDebug c PHPStorm
В IDE PHStorm выставляем breakpoints, кликая возле строчек кода. Далее дебаггер будет делать остановку на этих точках.
Запустив в браузере wi-backend.local (хост на vagrant-машине), дебаггер срабатывает для него и останавливается на точках останова (breakpoints). Дебаггер срабатывает, только если он включен в IDE (см. скриншот) - Start/Stop listening for PHP Debug Connections.
То же самое c xDebug для cli.
Выполнение cli-скрипта без xDebug:
bin/cli.php test
Выполнение cli-скрипта с xDebug. Нужно передавать ENV-параметр PHP_IDE_CONFIG
:
PHP_IDE_CONFIG="serverName=wi-backend.local" bin/cli.php test
В нижней части IDE PHPStorm открывается дебаггер, где видны значения всех переменных, а также, что наиболее важно, цепочки вызов с возможностью перехода к каждому вызову.