Установка xdebug на PhpStorm

Инструкция по настройке xdebug в PhpStorm на Mac OS.

Все следующее будет справедливо при установленном Homebrew и настроенным веб-сервером на Mac OS.

xdebug настраивать не всегда просто. Надо прописывать и указывать много всего разного. В данном труде будет описан один из возможных вариантов настройки с установленными у меня на тот момент версиями PHP. Соответственно нужно не тупо копировать ссылки на директории, а смотреть где всё находится это у вас и делать под себя. Также описаны ошибки, которые встречались у меня при настройке.

Установка

Заходим в консоль и запускаем команду установки xdebug

pecl install xdebug

Если возникла ошибка такого типа: Ошибка ERROR: failed to mkdir /usr/local/Cellar/php/7.3.9_1/pecl/

running: find «/private/tmp/pear/temp/pear-build-DreamjT4nWU/install-xdebug-2.7.2» | xargs ls -dils
8803261274 0 drwxr-xr-x 3 Dream wheel 96 Oct 19 02:56 /private/tmp/pear/temp/pear-build-DreamjT4nWU/install-xdebug-2.7.2
8803261823 0 drwxr-xr-x 3 Dream wheel 96 Oct 19 02:56 /private/tmp/pear/temp/pear-build-DreamjT4nWU/install-xdebug-2.7.2/usr
8803261824 0 drwxr-xr-x 3 Dream wheel 96 Oct 19 02:56 /private/tmp/pear/temp/pear-build-DreamjT4nWU/install-xdebug-2.7.2/usr/local
8803261825 0 drwxr-xr-x 3 Dream wheel 96 Oct 19 02:56 /private/tmp/pear/temp/pear-build-DreamjT4nWU/install-xdebug-2.7.2/usr/local/Cellar
8803261826 0 drwxr-xr-x 3 Dream wheel 96 Oct 19 02:56 /private/tmp/pear/temp/pear-build-DreamjT4nWU/install-xdebug-2.7.2/usr/local/Cellar/php
8803261827 0 drwxr-xr-x 3 Dream wheel 96 Oct 19 02:56 /private/tmp/pear/temp/pear-build-DreamjT4nWU/install-xdebug-2.7.2/usr/local/Cellar/php/7.3.9_1
8803261828 0 drwxr-xr-x 3 Dream wheel 96 Oct 19 02:56 /private/tmp/pear/temp/pear-build-DreamjT4nWU/install-xdebug-2.7.2/usr/local/Cellar/php/7.3.9_1/pecl
8803261829 0 drwxr-xr-x 3 Dream wheel 96 Oct 19 02:56 /private/tmp/pear/temp/pear-build-DreamjT4nWU/install-xdebug-2.7.2/usr/local/Cellar/php/7.3.9_1/pecl/20180731
8803261830 576 -rwxr-xr-x 1 Dream wheel 294068 Oct 19 02:56 /private/tmp/pear/temp/pear-build-DreamjT4nWU/install-xdebug-2.7.2/usr/local/Cellar/php/7.3.9_1/pecl/20180731/xdebug.so

Build process completed successfully
Installing ‘/usr/local/Cellar/php/7.3.9_1/pecl/20180731/xdebug.so’

Warning: mkdir(): File exists in System.php on line 294
PHP Warning: mkdir(): File exists in /usr/local/Cellar/php/7.3.9_1/share/php/pear/System.php on line 294

Warning: mkdir(): File exists in /usr/local/Cellar/php/7.3.9_1/share/php/pear/System.php on line 294
ERROR: failed to mkdir /usr/local/Cellar/php/7.3.9_1/pecl/20180731

То для решения, нас интересует последняя строка:

ERROR: failed to mkdir /usr/local/Cellar/php/7.3.9_1/pecl/20180731

Заходим и удаляем там файл pecl. После этого снова запускам установку xdebug.

Если всё пройдет успешно, появится сообщение:

Build process completed successfully
Installing ‘/usr/local/Cellar/php/7.3.9_1/pecl/20180731/xdebug.so’
install ok: channel://pecl.php.net/xdebug-2.7.2
Extension xdebug enabled in php.ini

Перезагружаем сервисы PHP

brew services restart php

Если вдруг PHP не перезагружается, смотрим логи:

/usr/local/var/log/php-fpm.log

Например, у меня была такая ошибка:

PHP: syntax error, unexpected BOOL_FALSE in /usr/local/etc/php/7.3/php.ini on line 1053
[19-Oct-2019 03:27:22] NOTICE: PHP message: PHP Warning: Failed loading Zend extension ‘xdebug.so’ (tried: /usr/local/lib/php/pecl/20180731/xdebug.so (dlopen(/usr/local/lib/php/pecl/20180731/xdebug.so, 9): image not found), /usr/local/lib/php/pecl/20180731/xdebug.so.so (dlopen(/usr/local/lib/php/pecl/20180731/xdebug.so.so, 9): image not found)) in Unknown on line 0
Failed loading /usr/local/Cellar/php/7.3.9_1/pecl/20180731/xdebug.so”

Настраиваем файл php.ini

Создаём файл xdebug.ini по такому пути (ну или к той версии php которая у вас текущая):

/usr/local/etc/php/7.3/conf.d/xdebug.ini

Внутри пишем конфиг такого типа:

[XDebug]
zend_extension="/usr/local/Cellar/php/7.3.9_1/pecl/20180731/xdebug.so"
xdebug.remote_autostart=1
xdebug.remote_port=9001
xdebug.remote_enable=1
; xdebug.profiler_enable=1
; xdebug.profiler_output_dir="/Users/Dream/Sites/_xdebug-profiler/"

xdebug.remote_host=localhost
xdebug.idekey=PHPstorm

Сохраняем, перезагружаем PHP:

brew services restart php

Смотрим что показывает команда:

php --ini

Если всё хорошо, должно показываться так:

Configuration File (php.ini) Path: /usr/local/etc/php/7.3
Loaded Configuration File:         /usr/local/etc/php/7.3/php.ini
Scan for additional .ini files in: /usr/local/etc/php/7.3/conf.d
Additional .ini files parsed:      /usr/local/etc/php/7.3/conf.d/ext-opcache.ini,
/usr/local/etc/php/7.3/conf.d/xdebug.ini

Настраиваем CLI Interpretator в PhpStorm

Теперь заходим в настройки Шторма и там где CLI Interpreter нажимаем три точки.

Видим, что показывается PHP, которая стоит по умолчанию в системе Mac OS.

В моем случае это не подходит. Кроме стандартного маковского PHP у меня установлен php от Homebrew. А там он находится по иному пути.

Поэтому ставим другой путь (для которого мы указывали настройки). В данном случае:

/usr/local/Cellar/php/7.3.9_1/bin

и после этого получаем такую красивую картинку, где все заполнено:

Через терминал можно проверить загруженные модули:

php -m

Сочетание xdebug должен встречаться 2 раза в списке. Один из которых под заголовком [Zend Modules].

Настраиваем PHP -> Servers

Прописываем для нашего сайта настройки таким образом:

Следующую картинку не помню, нужна ли была эта настройка, но оставлю тут на всякий случай:

Теперь можем запускать дебаг из из меню run настроек шторма:

По идее должны увидеть следующее:

Дело в том, что шторм использует php и конфиг тот который существует в системе Mac OS, а не тот что мы указали. Тем не менее он копирует конфиг нашего PHP внутрь текущего в Mac OS. Хоть на этом, спасибо!

Теперь чтобы всё заработало надо перезагрузить обычный апач:

sudo apachectl restart

И теперь наконец всё работает!

Кстати, если мы запустим php файл с функцией phpinfo() то рядом с Zend Engine увидим наш дебаг:

Как запустить xdebug

В шторме должно быть все зелененькое:

В браузере должно быть установлено расширение для дебага и тоже включено:

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

Профилирование

Профилирование такая штука, которая показывает весь путь и все происходящие события при загрузки страницы.

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

У меня выше в настройках он был закомментирован, но если хотите запустить его, уберите точки с запятой:

; xdebug.profiler_enable=1
; xdebug.profiler_output_dir="/Users/Dream/Sites/_xdebug-profiler/"

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

Открываем файл с профилированием:

И потом наслаждаемся переплетением функций, событий и что там у вас будет еще.

English Query (запросы по теме на английском языке)

Setup xdebug in PhpStorm

Привет. Ты находишься на моём сайте. Я разработчик. Здесь я делюсь своими наработками и знаниями. Спрашивай в комментариях, если тебе что-то не понятно или пиши, если есть что добавить.

Если вам пригодилась информация, вы можете поблагодарить автора сайта символическим пожертвованием:

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

Напишите свой комментарий, если вам есть что добавить/поправить/спросить по теме текущей статьи: "Установка xdebug на PhpStorm"
Если вам нужно добавить участок кода ставьте его между тегами <code></code>