Как настроить локальную среду отладки в PHP

kak nastroit lokalnuyu sredu otladki v 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 — Выбор хост, на котором работает клиент отладки. По умолчанию – локальный хост.
  • 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».

Измените имя конфигурации из «Unnamed» на другое. Я выбрал название «Учебник» по понятным причинам;) Затем поставьте флажок «Фильтровать отлаженное подключение по ключу IDE».

NjnubSo0dlzY8tQYtosUr2zbV-3PwZtPvdd9

Нажмите кнопку Серверы (…), затем выберите + (Добавить новый сервер).

  • Переименуйте сервер на что-то более успокаивающее. В этом примере я выбрал localbackend1.
  • В поле Хост введите локальный хост. Установите Debugger на Xdebug.
  • Выберите пункт «Использовать сопоставление путей» и наведите указатель на папку программы.

Нажмите кнопку Применить. Вы вернетесь к предыдущему окну, где вы увидите, что ключ IDE можно редактировать, и теперь вам нужно ввести ключ. Я всегда ставлю phpstorm или что-то подобное.

KaooonBEOf6t7dTzZn8fGN-unZ7tyOEK9BHJ

Вы заметите, что ключ IDE «phpstorm» уже находится в вашем файле 20-xdebug.ini:

xdebug.idekey=”phpstorm”

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

Нажмите, чтобы подать заявку и вуаля!

Вы закончили с настройкой!

Тестирование и закрытие

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

aJXGrZ-94n-cjERXOV4rjkTLm8kNe3GsboJ9

Вы можете проверить это, установив точку остановки в своем проекте. Нажмите кнопку «Ошибка» в окне конфигурации учебника и запустите приложение.

Это все, если все в порядке, вы должны достичь точки остановки.

И помните, что ничто не может лучше видеть значение времени выполнения во время отладки.

Спасибо, что читаете! Просмотрите больше подобных статей и других интересных вещей, которые я делаю в своем профиле на Github:

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

Ваш адрес email не будет опубликован.