Как да настроите локална среда за отстраняване на грешки в 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 - Тази настройка може да се използва за увеличаване (или намаляване) на времето, през което сесията за отдалечено отстраняване на грешки остава активна чрез бисквитката на сесията. По подразбиране е 3600.
  • xdebug.remote_log - Ако е зададена на стойност, тя се използва като име на файл във файл, в който се регистрират всички комуникации с отдалечен дебъгер.
  • xdebug.var_display_max_depth - Контролира колко вложени нива на елементи от масива и свойства на обекта са, когато променливите се показват или с xdebug_var_dump (), xdebug.show_local_vars или чрез Traces на функциите. По подразбиране е 3.
  • xdebug.profiler_enable - Активира профила на Xdebug, който създава файлове в изходната директория на профила. По подразбиране е 0.
  • xdebug.idekey - Контролира кой IDE ключ Xdebug трябва да предаде на DBGp манипулатора за отстраняване на грешки. По подразбиране се основава на настройките на средата.

Запазете файла и рестартирайте сървъра Apache:

sudo service apache2 restart

Xdebug и PhpStorm

Първо трябва да отворите PhpStorm и да изберете Run> Edit Configuration. Там трябва да изберете + (Добавяне на нова конфигурация) и да изберете „PHP Remote Debug“.

Променете името на конфигурацията от „Без име“ на нещо друго. Избрах името „Урок“ по очевидни причини;) След това проверете „Филтрирайте връзката за отстраняване на грешки по IDE ключ“.

Изберете бутона Сървъри (...) и след това изберете + (Добавяне на нов сървър).

  • Преименувайте сървъра си на нещо по-успокояващо. В този пример избрах „localbackend1“.
  • В полето Host въведете във вашия localhost. Задайте Debugger на Xdebug.
  • Изберете „Use map mapping“ и посочете папката на вашето приложение.

Щракнете върху Приложи. Ще се върнете в предишния прозорец, където ще видите, че IDE ключът може да се редактира и сега трябва да въведете ключ. Винаги поставям „phpstorm“ или нещо подобно.

Ще забележите, че IDE ключът „phpstorm“ вече е във вашия файл 20-xdebug.ini:

xdebug.idekey=”phpstorm”

Също така трябва да изберете само един екземпляр, тъй като това ще ви попречи да стартирате повече от един екземпляр на един и същ проект.

Кликнете, за да кандидатствате и Voilà!

Приключихте с настройката!

Тестване и опаковане

Сега сте готови. Трябва да видите конфигурацията на урока, която създадохме в горния десен ъгъл на PhpStorm.

Можете да го тествате, като зададете точка на прекъсване във вашия проект. Кликнете върху бутона „бъг“ в прозореца за конфигуриране на Урок и след това стартирайте приложението си.

Това трябва да е всичко, ако всичко е наред, трябва да ударите точката на прекъсване.

И не забравяйте, че нищо не може да надмине усещането, че виждате стойности на времето за изпълнение по време на отстраняване на грешки.

Благодаря ви, че прочетохте! Вижте още статии като тази и други забавни неща, които правя в моя профил в Github: //github.com/GoranAviani