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

Admin Mac OS, PHP, PHP Errors, Software

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

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

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

Установка

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

pecl install xdebug

Ошибка 1

Если возникла ошибка такого типа: Ошибка 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.

Ошибка 2

Как-то раз возникла такая ошибка:

Notice: Trying to access array offset on value of type bool in REST.php on line 181
PHP Notice: Trying to access array offset on value of type bool in /usr/local/Cellar/php/7.4.2/share/php/pear/PEAR/REST.php on line 181

Notice: Trying to access array offset on value of type bool in /usr/local/Cellar/php/7.4.2/share/php/pear/PEAR/REST.php on line 181
No releases available for package «pecl.php.net/xdebug»
install failed

При повторном запуске команды установки, она исчезла сама по себе:

pecl install 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”

Failed loading /usr/local/Cellar/php/7.3.9_1/pecl/20180731/xdebug.so

Как исправить. Заходим в файл

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

или в ту версию, которая у вас текущая. Внутри исправляем путь до файла xdebug.so.

Его искать по адресу:

/usr/local/lib/php/pecl/

или (версия php может быть другой)

Failed loading /usr/local/Cellar/php/7.4/pecl/

Настраиваем файл 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

или

/usr/local/Cellar/php/7.4.2/bin

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

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

php -m

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

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

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

Изменим порт на 9001

Здесь:

Добавим конфиг для дебага:

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

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

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

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

sudo apachectl restart

Также перезайдите в проект шторма, иначе может не заработать.

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

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

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

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

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

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

Теперь включаем трубку. А если она была включена, сначала выключить, потом включить. Перезагрузить страницу, не забыв поставить брейкпоинты. Если при загрузке страницы код попадет в брейкпоинт, то откроется программа phpStorm с такой табличкой:

Выбираем как на скрине выше и нажимаем сохранить. Эта табличка возникает только в первый раз.

На этом все. Наслаждаемся дебаггером.

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

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

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

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

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

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

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

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

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

Setup xdebug in PhpStorm

У сайта нет цели самоокупаться, поэтому на сайте нет рекламы. Но если вам пригодилась информация, можете лайкнуть страницу, оставить комментарий или отправить мне подарок на чашечку кофе.

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

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