XDebug, установка на XAMPP

+9
1.36K
XDebug, установка на XAMPP

Введение:

И так, для начала давайте определим, кто Вы: кто ещё не использует xdebug, или кто уже использует xdebug? Если Вы из первой группы тогда небольшая справка из вики: «XDebug — средство профилирования и отладки PHP скриптов. XDebug поставляется как расширение для PHP. Работает по протоколу DBGp». Используется во многих современных IDE, но если Вы, как и я используете текстовый редактор, то отладкой кода может превратиться в ад, в этом посте я попробую решить эту проблему. 

Установка:

Давайте договоримся, что у Вас стоит windows с уже установленным XAMPP (разбирал установку/настройку на другом форуме, модераторы не баньте пж 😖). 

Для начала скачиваем xdebug нужной версии. Это должен быть dll файл. Заходим в рабочий каталог XAMPP, у меня это C:\users\panda\xampp, но у Вас может быть другой. Находим в нём папку php с папкой ext, то бишь в моём примере должен получиться такой путь: C:\users\panda\xampp\php\ext, туда и кидаем php_xdebug.dll. Заходим обратно в каталог php и открываем php.ini. Находим директиву output_buffering и отключаем (если такой директивы нету, просто впишите строку ниже куда-нибудь): 

  1. output_buffering = off

Крутим файл в конец и добавляем:

  1. [XDebug]
  2. ;Путь до dll файла
  3. zend_extension = "path"
  4. xdebug.remote_autostart = 1
  5. xdebug.profiler_append = 0
  6. xdebug.profiler_enable = 0
  7. xdebug.profiler_enable_trigger = 0
  8. ;Путь до каталога ...\xampp\tmp
  9. xdebug.profiler_output_dir = "path"
  10. ;xdebug.profiler_output_name = "cachegrind.out.%t-%s"
  11. xdebug.remote_enable = 1
  12. xdebug.remote_handler = "dbgp"
  13. xdebug.remote_host = "127.0.0.1"
  14. ;Путь ...\xampp\tmp\xdebug.txt
  15. xdebug.remote_log = "path"
  16. xdebug.remote_port = 9000
  17. ;Путь до каталога ...\xampp\tmp
  18. xdebug.trace_output_dir = "path"
  19. ;36000 = 10h
  20. xdebug.remote_cookie_expire_time = 36000

Теперь, вместо path нужно вставить реальные пути (над директивами написано какие нужны пути). Сохраняем, перезапускаем apache.

На этом всё, теперь мы имеем крутой var_dump() и улучшенный анализ ошибок.

+1
Sonat Sonat 2 года назад #

Что значит 10 строка?

  1. ;xdebug.profiler_output_name = "cachegrind.out.%t-%s"

Почему она закомментирована? Другие закомментированные строки тут для объяснения о действиях в следующей строке, а вот что значит эта строка? Она просто лишняя? Или её раскомментировать? 

+2
Panda58dev Panda58dev 2 года назад #

Лишняя, её можно удалить 😅 Но вообще о настройке xdebug подробно можете почитать  тут.

+1
IamB IamB 2 года назад #

но если Вы, как и я используете текстовый редактор, то отладкой кода может превратиться в ад

Отладка — одно из основных повседневных занятий, того кто пишет, поэтому не стоит придавать этому процессу негативный оттенок. Ошибки входят в комплект развлечений© — вот, на мой взгляд, правильный подход.

Использую сейчас VSCode(точнее, VSCodium), не использовал и не собираюсь использовать XDebug, мне обычно хватает штатных сообщений об ошибках. Если вам не хватает вывода var_dump(), можете посмотреть на Kint или VarDumper Symfony.

Ну и наконец

Как найти жуков там, где казалось бы их нет.

Эффективнее, чем статические анализаторы кода, в этом плане инструментов нет. 

0
Panda58dev Panda58dev 2 года назад #

Эффективнее, чем статические анализаторы кода, в этом плане инструментов нет.

Возможно :) Вам никто не запрещает юзать phpStan или любые другие инструменты, на мой взгляд xdebug-а вполне хватает для отладки небольшого кода. Когда кода очень много в любом случае буду использовать PHPStorm.

+1
Evg Evg 2 года назад #

XDebug — хорошее средство профилирование, если разобраться в этом. Да, сегодня есть другие инструменты, но XDebug по прежнему занимает ведущее место. Для многих он просто незаменим, чтобы посмотреть структуру проекта, найти слабые места. Если плагины под него. Можно анализировать любые цепочки. Это особенно имеет смысл когда занимаешься архитектурой.  Мое мнение.

Еще от автора

Кнопка "скопировать ссылку"
Кнопка "скопировать ссылку" в инфобаре, что бы пользователь мог ей поделиться.
"Поделиться" - быстро, дёшево и сердито!
Простой способ добавить кнопку "поделиться" в свои записи.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.