Як налаштувати локальне середовище налагодження в PHP

Нещодавно я почав більше зосереджуватися на PHP, і мені потрібно було налаштувати локальне середовище налагодження. Оскільки підручників про те, як це зробити, не так багато, я зіткнувся з деякими проблемами щодо запуску та запуску налаштування.

Поєднавши кілька підручників і провевши кілька годин на декількох форумах, я придумав цей текст. Додаток, над яким я працюю, працює всередині коробки Vagrant, яка якось хитка. Час від часу він руйнується, тому мені доводиться переробляти це налаштування, і тому я знаю, що це налаштування працює :).

Мета цього підручника - змусити Xdebug працювати на вашому сервері, а потім вказати PhpStorm на Xdebug.

Давайте розпочнемо.

Передумови

Якщо на вашому сервері не встановлено Xdebug, але ви використовуєте PHP7, ви можете зробити це, скориставшись Індивідуальними інструкціями з встановлення з офіційного сайту Xdebug тут.

Однак, оскільки в моєму проекті використовується PHP5, мені довелося робити це по-старому: шукати на форумах .

У цьому посібнику я припускаю, що у вас встановлений Xdebug.

Починаємо

Спочатку потрібно знайти розташування файлу xdebug.so на вашому сервері. Скопіюйте місце розташування кудись, як ви будете використовувати його згодом.

locate xdebug.so

Тепер вам потрібно перейти всередину вашого сервера до місця: /etc/php5/apache2/conf.d/ і перевірити, чи існує там файл 20-xdebug.ini. Якщо він не існує, створіть його. Ви можете створити його за допомогою таких команд, як touch, vim, vi, nano тощо.

Ви бачите, що мій проект створений у PHP5, тому змініть назву / розташування папки відповідно до вашої версії PHP.

Тепер відкрийте файл 20-xdebug.ini і вставте його в:

zend_extension=”location to your xdebug.so file” xdebug.remote_enable=1 xdebug.remote_port=9000 xdebug.remote_host=”your localhost address” xdebug.remote_autostart=1 xdebug.remote_connect_back=0 xdebug.remote_handler=”dbgp” xdebug.remote_mode=req xdebug.remote_cookie_expire_time=-9999 xdebug.remote_log=”/tmp/xdebug.log” xdebug.var_display_max_depth=15 xdebug.profiler_enable=0 xdebug.idekey=”phpstorm”

З пояснення файлу 20-xdebug.ini, який написано нижче, ви побачите, що деякі з цих параметрів не потрібні, або що для них встановлено значення за замовчуванням. Я зберігаю ці значення у файлі 20-xdebug.ini, оскільки їх добре знати.

Пояснення до файлу 20-xdebug.ini:

  • xdebug.remote_enable - визначає, чи слід Xdebug намагатися зв’язатись із клієнтом налагодження, який прослуховує хост та порт, як встановлено в налаштуваннях
  • xdebug.remote_port - Порт, до якого Xdebug намагається підключитися на віддаленому хості. За замовчуванням 9000.
  • xdebug.remote_host - Вибирає хост, на якому працює клієнт налагодження. Типовим є localhost.
  • xdebug.remote_autostart - коли для цього параметра встановлено значення 1, Xdebug намагатиметься запустити віддалений сеанс налагодження та спробувати підключитися до клієнта.
  • xdebug.remote_connect_back - Якщо увімкнено, параметр xdebug.remote_host ігнорується, і Xdebug намагатиметься підключитися до клієнта, який зробив запит HTTP. За замовчуванням 0.
  • xdebug.remote_handler - може бути або 'php3', який вибирає старий вивід налагоджувача у стилі PHP 3, 'gdb', що дозволяє GDB, як інтерфейс налагоджувача, або 'dbgp' - протокол налагоджувача. Протокол DBGp - єдиний підтримуваний протокол. За замовчуванням dbgp.
  • xdebug.remote_mode - Вибирає, коли ініціюється підключення до налагодження. Цей параметр може мати два різних значення: req - Xdebug спробує підключитися до клієнта налагодження, як тільки скрипт запуститься. jit - Xdebug намагатиметься підключитися до клієнта налагодження, як тільки виникає стан помилки.
  • xdebug.remote_cookie_expire_time - Цей параметр можна використовувати для збільшення (або зменшення) часу, протягом якого сеанс віддаленої налагодження залишається активним за допомогою файлу cookie сеансу. За замовчуванням 3600.
  • xdebug.remote_log - якщо встановлено значення, воно використовується як ім'я файлу, до якого реєструються всі віддалені зв'язки налагоджувача.
  • xdebug.var_display_max_depth - керує тим, скільки вкладених рівнів елементів масиву та властивостей об'єкта є, коли змінні відображаються або з xdebug_var_dump (), xdebug.show_local_vars, або через Трасування функцій. За замовчуванням 3.
  • xdebug.profiler_enable - Вмикає профайлер Xdebug, який створює файли у каталозі виводу профілю. За замовчуванням 0.
  • xdebug.idekey - керує тим, який IDE-ключ Xdebug повинен передавати обробнику налагоджувачів DBGp. За замовчуванням засновано на налаштуваннях середовища.

Збережіть файл і перезапустіть сервер Apache:

sudo service apache2 restart

Xdebug та PhpStorm

Спочатку потрібно відкрити PhpStorm і вибрати Виконати> Редагувати конфігурацію. Там слід вибрати + (Додати нову конфігурацію) та вибрати “Віддалена налагодження PHP”.

Змініть назву конфігурації з "Без імені" на щось інше. Я вибрав назву “Підручник” зі зрозумілих причин;) Потім перевірте “Фільтрувати налагоджувальне з’єднання за IDE-ключем”.

Виберіть кнопку Сервери (…), а потім виберіть + (Додати новий сервер).

  • Перейменуйте свій сервер на щось більш заспокійливе. У цьому прикладі я вибрав “localbackend1”.
  • У полі Host введіть у своєму localhost. Встановіть для налагоджувача значення Xdebug.
  • Виберіть “Використовувати зіставлення шляхів” і наведіть вказівник на папку вашого додатка.

Клацніть на Застосувати. Ви повернетесь до попереднього вікна, де ви побачите, що ключ IDE можна редагувати, і тепер вам потрібно ввести ключ. Я завжди ставлю "phpstorm" або щось подібне.

Ви помітите, що IDE-ключ "phpstorm" вже є у вашому файлі 20-xdebug.ini:

xdebug.idekey=”phpstorm”

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

Натисніть, щоб застосувати та Voilà!

Ви закінчили налаштування!

Тестування та завершення

Тепер ви закінчили. Ви повинні побачити конфігурацію підручника, яку ми створили у верхньому правому куті PhpStorm.

Ви можете перевірити це, встановивши точку зупинки у своєму проекті. Натисніть кнопку "помилка" у вікні конфігурації підручника, а потім запустіть програму.

Це має бути все, якщо все гаразд, ви повинні досягти точки зупинку.

І пам’ятайте, ніщо не перевершує відчуття бачення значень часу роботи під час налагодження.

Дякую за читання! Перегляньте більше подібних статей та інші цікаві речі, які я роблю у своєму профілі Github: //github.com/GoranAviani