Инструкция по настройке xdebug в PhpStorm на Mac OS.
Все следующее будет справедливо при установленном Homebrew и настроенным веб-сервером на Mac OS.
xdebug настраивать не всегда просто. Надо прописывать и указывать много всего разного. В данном труде будет описан один из возможных вариантов настройки с установленными у меня на тот момент версиями PHP. Соответственно нужно не тупо копировать ссылки на директории, а смотреть где всё находится это у вас и делать под себя. Также описаны ошибки, которые встречались у меня при настройке.
Установка
Заходим в консоль и запускаем команду установки 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.soBuild 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 294Warning: 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
То для решения, нас интересует последняя строка:
Заходим и удаляем там файл 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 181Notice: 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
При повторном запуске команды установки, она исчезла сама по себе:
Если всё пройдет успешно, появится сообщение:
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
Если вдруг PHP не перезагружается, смотрим логи:
Например, у меня была такая ошибка:
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
Как исправить. Заходим в файл
или в ту версию, которая у вас текущая. Внутри исправляем путь до файла xdebug.so.
Его искать по адресу:
или (версия php может быть другой)
Настраиваем файл php.ini
Создаём файл xdebug.ini по такому пути (ну или к той версии php которая у вас текущая):
Внутри пишем конфиг такого типа:
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:
Смотрим что показывает команда:
Если всё хорошо, должно показываться так:
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. А там он находится по иному пути.
Поэтому ставим другой путь (для которого мы указывали настройки).
Зависит от версии, например:
или
и после этого получаем такую красивую картинку, где все заполнено:
Через терминал можно проверить загруженные модули:
Сочетание xdebug должен встречаться 2 раза в списке. Один из которых под заголовком [Zend Modules].
Настраиваем PHP -> Servers
Прописываем для нашего сайта настройки таким образом:
Изменим порт на 9001
Здесь:
Добавим конфиг для дебага:
Теперь можем запускать дебаг из меню run настроек шторма:
По идее должны увидеть следующее:
Дело в том, что шторм использует php и конфиг тот который существует в системе Mac OS, а не тот что мы указали. Тем не менее он копирует конфиг нашего PHP внутрь текущего в Mac OS. Хоть на этом, спасибо!
Теперь чтобы всё заработало надо перезагрузить обычный апач:
Также перезайдите в проект шторма, иначе может не заработать.
И теперь наконец всё работает!
Кстати, если мы запустим php файл с функцией phpinfo() то рядом с Zend Engine увидим наш дебаг:
Как запустить xdebug
В шторме должно быть все зелененькое:
В браузере должно быть установлено расширение для дебага (в хроме Xdebug helper) и тоже включено:
В проекте PhpStorm должны быть проставлены breakpoint. Затем при перезагрузки страницы и с включенными настройками выше, откроется дебаг в шторме.
Теперь включаем трубку. А если она была включена, сначала выключить, потом включить. Перезагрузить страницу, не забыв поставить брейкпоинты. Если при загрузке страницы код попадет в брейкпоинт, то откроется программа phpStorm с такой табличкой:
Выбираем как на скрине выше и нажимаем сохранить. Эта табличка возникает только в первый раз.
На этом все. Наслаждаемся дебаггером.
Профилирование
Профилирование такая штука, которая показывает весь путь и все происходящие события при загрузки страницы.
Одновременно с установленным дебагом, мы также настроили профилирование. Оно жрет очень много памяти и ресурсов и его можно отключить в настройках php.ini.
У меня выше в настройках он был закомментирован, но если хотите запустить его, уберите точки с запятой:
; xdebug.profiler_output_dir="/Users/Dream/Sites/_xdebug-profiler/"
Во второй строке указан путь куда будут сохраняться файлы профилирования, которые можно посмотреть через шторм, вкладка Tools.
Открываем файл с профилированием:
И потом наслаждаемся переплетением функций, событий и что там у вас будет еще.