Начини плаћања Abuse

Конфигурабилни Ксдебуг у ПХПСторму

07.05.2021, 22:28

Отклањање грешака се сматра једним од најважнијих процеса у програмирању. Користећи програм за отклањање грешака, можете видети шта се дешава у програму, које функције се изводе, шта се чува у променљивим, а такође изводите све корак по корак и разумете тачно на којој линији и на којим вредностима варијабли долази до грешке .

На пример, за ПХП се користи Ксдебуг дебуггер, ПХПСторм је једно од најпопуларнијих развојних окружења. Затим ћемо погледати како да конфигуришемо Ксдебуг у ПхпСторму за отклањање грешака на вашем локалном рачунару иу Доцкер-у.

Подешавање КСДЕБУГ-а у ПХПСТОРМ-у

Хајде да разговарамо о томе како се отклањање грешака врши на локалном серверу.

Хајде да погледамо цео процес користећи пример Убунту-а и ПХП интерпретера конфигурисаног са Апацхе-ом. За друге конфигурације, путање до датотека могу се разликовати, али суштина се не мења. Ксдебуг дебагер вам омогућава да паузирате извршавање кода, прегледате стек позива и садржај променљивих. Његов једини недостатак је што нема погодан контролни интерфејс. У сврху управљања отклањањем грешака, обично се користи ИДЕ. Али ИДЕ не може ни на који начин рећи дебагеру да треба да почне да отклања грешке, јер је одговоран само за код. Да бисте то урадили, биће вам потребна и екстензија претраживача Дебуг Хелпер, помоћу које можете омогућити режим за отклањање грешака.

Прво морате да инсталирате Ксдебуг. Да бисте то урадили, покрените:

 $ sudo apt install xdebug

Када се процес инсталације Ксдебуг-а заврши, требало би да конфигуришете програм тако да када започнете сесију отклањања грешака, покушаће да се повеже са нашим ИДЕ-ом да контролише отклањање грешака. Да бисте то урадили, додајте следеће редове у датотеку /etc/php/7.4/apache2/conf.d/20-xdebug.ini у верзији Ксдебуг 2:

$ sudo vi /etc/php/7.4/apache2/conf.d/20-xdebug.ini zend_extension=xdebug.so xdebug.remote_enable=1 xdebug.remote_host=127.0.0.1 xdebug.remote_connect_back=1 xdebug.remote_port=9000 xdebug.remote_handler=dbgp xdebug.remote_mode=req xdebug.remote_autostart=false

За нову верзију најбоље је користити другачији формат:

 xdebug.mode=debug xdebug.start_with_request=trigger xdebug.discover_client_host = false xdebug.client_host = 127.0.0.1 xdebug.client_port = 9000

Хајде да ближе погледамо подешавања. Први параметар xdebug.mode је режим отклањања грешака, могуће опције:

  • develop - омогућава излаз додатних информација, замењује вар_думп;

  • debug - режим извршавања кода ред по ред, што је управо оно што је потребно у овом случају;

  • profile - профилисање;

  • trace - траг извршења програма.

Омогућава неколико режима истовремено када су наведени одвојени зарезима. Други ред кдебуг.старт_витх_рекуест дефинише како ће се програм за отклањање грешака покренути за отклањање грешака, праћење и сличне режиме:

  • да - увек, при покретању ПХП скрипти;
  • не - покретање само из кода помоћу посебних функција;
  • окидач - на захтев, коришћењем посебне променљиве у $_ЕНВ, $_ПОСТ, $ЦООКИЕ или другом низу. Ова опција је најприкладнија у овом случају тако да се програм за отклањање грешака не покреће када то није неопходно.

Трећи xdebug.discover_client_host је тачан, у ком случају кдебуг покушава да се повеже са хостом који је прослеђен у заглављу HTTP_X_FORWARDED_FOR . Пошто је хост наведен у следећем реду, ова функција у овом случају није потребна. Следеће, клијентски хост је назначен где треба да се повежете да бисте управљали отклањањем грешака 127.0.0.1 и портом 9000. Ово је порт који се подразумевано користи у ПхпСторм-у тренутно. Након што сачувате подешавања, потребно је да поново покренете Апацхе помоћу посебне команде:

 $ sudo systemctl restart apache2

Затим морате да конфигуришете ПхпСторм. Покрените програм, а затим отворите мени Покрени -> Уреди конфигурације. Пред вама ће се отворити прозор у коме треба да конфигуришете дебагер.

Подешавање КСДЕБУГ-а у ПХПСТОРМ-у

Кликните на дугме + и изаберите ПХП Ремоте Дебуггер са листе која се отвара:

КОНФИГУРИСАЊЕ КСДЕБУГ-а У ПХПСТОРМ-у

Не мењамо ништа у подешавањима, само наводимо назив овог метода за отклањање грешака. Ако сервер са којег ће се очекивати везе није наведен, онда ће све везе бити прихваћене.

Подешавање КСДЕБУГ-а у ПХПСТОРМ-у

Ако треба да промените порт на који ће се Ксдебуг повезати, отворите мени Филе -> Сеттингс -> ПХП -> Дебуг -> ДБГп Проки. Овде можете одредити жељени порт.

Подешавање КСДЕБУГ-а у ПХПСТОРМ-у

Можемо рећи да је ИДЕ сада спреман. Сада кликните на бубу на горњој траци са алаткама. Програм ће почети да чека да се програм за отклањање грешака повеже и ми ћемо поставити неколико тачака прекида у коду једноставним кликом испред реда са кодом:

Подешавање КСДЕБУГ-а у ПХПСТОРМ-у

Сада остаје само да конфигуришете претраживач. За Цхроме можете преузети  посебно проширење. Инсталирајте га и отворите страницу на којој желите да отклоните грешке. Кликните на икону проширења и изаберите Отклањање грешака. Икона екстензије ће постати зелена:

Подешавање КСДЕБУГ-а у ПХПСТОРМ-у

Освежите страницу и вратите се на ПХПСторм. Ако је све урађено исправно, тамо ће почети сесија отклањања грешака. Када први пут покренете програм, од вас ће се можда тражити да конфигуришете кореспонденцију између локалних путања до датотека и удаљених. Овде нема потребе да конфигуришете било шта за локални сервер. само кликните на Прихвати:

Подешавање КСДЕБУГ-а у ПХПСТОРМ-у

Након тога, програм за отклањање грешака ће зауставити извршавање на изабраној тачки прекида и интерфејс за отклањање грешака ће се појавити у програму:

Подешавање КСДЕБУГ-а у ПХПСТОРМ-у

Сада хајде да схватимо како да подесимо Ксдебуг ПхпСторм и Доцкер.

Отклањање грешака у ПХП-у у Доцкер-у

Доцкер може бити сложен. Пошто сам дебагер мора да се повеже са ИДЕ, неопходно је проследити хост у контејнер. На оперативном систему Виндовс то се може урадити помоћу хост.доцкер.интернал адресе. Али на Линук-у се то не дешава подразумевано. Да бисте додали такву адресу, потребно је да додате следеће редове у доцкер-цомпосе:

extra_hosts:

host.docker.internal: host-gateway

Користимо следећу структуру директоријума:

Подешавање КСДЕБУГ-а у ПХПСТОРМ-у

Минимални потребан docker-compose.yaml ће изгледати овако:

 version: '3.5' networks: losst-network: services: nginx: image: nginx ports: - '8094:80' volumes: - ./www/:/var/www/ - ./conf/nginx:/etc/nginx/conf.d networks: - losst-network php-fpm: build: context: ./conf/php-fpm extra_hosts: host.docker.internal: host-gateway volumes: - ./www:/var/www/ networks: - losst-network

Једноставно декларишемо два контејнера, nginx и php-fpm . Не правимо промене у првом, тако да можете једноставно да узмете званичну слику, монтирате изворну фасциклу, конфигурациону датотеку и проследите порт. У другом контејнеру морате да инсталирате и конфигуришете Ксдебуг, тако да ће морати да се компајлира на основу званичног пхп контејнера. За исти контејнер, потребно је да наведете директиву extra_hosts без ње, ништа неће радити. Нгинк конфигурација је такође прилично стандардна:

 server { listen 80; server_name _ !default; root /var/www/; add_header X-Frame-Options "SAMEORIGIN"; add_header X-XSS-Protection "1; mode=block"; add_header X-Content-Type-Options "nosniff"; index index.html index.htm index.php; charset utf-8; location / { try_files $uri $uri/ /index.php?$query_string; } error_page 404 /index.php; location ~ .php$ { fastcgi_pass php-fpm:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; include fastcgi_params; } }

Овако се конфигурише обрада ПХП скрипти у пхп-фпм контејнеру и преусмеравање непостојећих УРЛ-ова на index.php , што је сасвим стандардно за многе оквире и ЦМС. У Доцкерфилеу пхп-фпм контејнера, то изгледа овако:

Инсталирамо кдебуг користећи пецл, а затим копирамо његову конфигурациону датотеку у контејнер. Фајл:

xdebug.mode=debug xdebug.start_with_request=trigger xdebug.discover_client_host = false xdebug.client_host = host.docker.internal xdebug.client_port = 9000

Контејнер има инсталиран Ксдебуг 3 за ПХП 8 јер стара верзија више не ради са овом верзијом језика, па се користи нова конфигурациона синтакса. Па, домаћин, host.docker.internal , који је претходно био регистрован у доцкер-цомпосе.иамл. кдебуг ПХПСторм доцкер подешавање је завршено. Затим можете покренути пројекат:

 docker-compose up --build

Сада, као иу претходној опцији, можете да омогућите режим за отклањање грешака у претраживачу, освежите страницу и програм за отклањање грешака ће се успешно повезати са ИДЕ-ом, упркос чињеници да ради у Доцкер-у

Подешавање КСДЕБУГ-а у ПХПСТОРМ-у