Modhanna íocaíochta Abuse

Xdebug Inchumraithe i PHPStorm

07.05.2021, 22:28

Meastar go bhfuil dífhabhtú ar cheann de na próisis is tábhachtaí i ríomhchlárú. Ag baint úsáide as dífhabhtóir, is féidir leat a fheiceáil cad atá ag tarlú sa chlár, cad iad na feidhmeanna a dhéantar, cad a stóráiltear in athróga, agus freisin gach rud a dhéanamh céim ar chéim agus a thuiscint go díreach ar an líne agus ar cad iad na luachanna na n-athróg a tharlaíonn an earráid. .

Mar shampla, le haghaidh PHP úsáidtear an dífhabhtóir Xdebug, tá PHPStorm ar cheann de na timpeallachtaí forbartha is coitianta. Ansin, féachfaimid ar conas Xdebug a chumrú i PhpStorm le haghaidh dífhabhtaithe ar do ríomhaire áitiúil agus in Docker.

XDEBUG a shocrú i PHPSTORM

Labhraímis faoin gcaoi a ndéantar dífhabhtú ar fhreastalaí áitiúil.

Breathnaímid ar an bpróiseas iomlán ag baint úsáide as an sampla de Ubuntu agus an ateangaire PHP cumraithe le Apache. I gcás cumraíochtaí eile, féadfaidh na cosáin chuig na comhaid a bheith difriúil, ach ní athraíonn an bunúsach. Ligeann an dífhabhtóir Xdebug duit forghníomhú an chóid a chur ar sos, féachaint ar chruach na nglaonna agus inneachar na n-athróg. Is é an t-aon mhíbhuntáiste atá aige ná nach bhfuil comhéadan rialaithe áisiúil aige. Chun críche dífhabhtaithe a bhainistiú, úsáidtear IDE de ghnáth. Ach ní féidir leis an IDE a rá leis an dífhabhtóir ar bhealach ar bith go gcaithfidh sé tús a chur le dífhabhtú, toisc go bhfuil sé freagrach as an gcód amháin. Chun seo a dhéanamh, beidh an síneadh brabhsálaí Debug Helper uait freisin, lena bhféadfaidh tú modh dífhabhtaithe a chumasú.

Ar dtús ní mór duit Xdebug a shuiteáil. Chun seo a dhéanamh, rith:

 $ sudo apt install xdebug

Nuair a bheidh an próiseas suiteála Xdebug críochnaithe, ba cheart duit an clár a chumrú sa chaoi is nuair a thosaíonn tú ar sheisiún dífhabhtaithe, déanfaidh sé iarracht ceangal lenár IDE chun dífhabhtú a rialú. Chun seo a dhéanamh, cuir na línte seo a leanas leis an gcomhad /etc/php/7.4/apache2/conf.d/20-xdebug.ini i leagan Xdebug 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

Maidir leis an leagan nua is fearr formáid eile a úsáid:

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

Breathnaímis ar na socruithe. Is é an chéad pharaiméadar xdebug.mode an modh dífhabhtaithe, roghanna féideartha:

  • develop - cuireann sé ar chumas an t-aschur faisnéise breise, sáraíonn var_dump;

  • debug - modh forghníomhaithe cód líne-ar-líne, a bhfuil go díreach cad is gá sa chás seo;

  • profile - próifíliú;

  • trace - rian de chur i gcrích an chláir.

Cumasaíonn sé roinnt modhanna ag an am céanna nuair a liostaítear iad agus iad scartha le camóga. Sainmhíníonn an dara líne xdebug.start_with_request conas a thosófar an dífhabhtóir le haghaidh modhanna dífhabhtaithe, rian agus modhanna comhchosúla:

  • yes - i gcónaí, nuair a rith scripteanna PHP;
  • níl - seoladh ach ó chód ag baint úsáide as feidhmeanna speisialta;
  • truicear - ar iarratas, ag baint úsáide as athróg speisialta in $_ENV, $_POST, $COOKIE nó eagar eile. Is fearr a oireann an rogha seo sa chás seo ionas nach dtosaíonn an dífhabhtóir nuair nach gá.

Tá an tríú xdebug.discover_client_host fíor, agus sa chás sin déanann xdebug iarracht ceangal leis an ósta a ritheadh sa cheanntásc HTTP_X_FORWARDED_FOR . Ós rud é go sonraítear an t-óstach ar an gcéad líne eile, níl gá leis an ngné seo sa chás seo. Ar aghaidh, cuirtear in iúl don óstach cliant nuair is gá duit ceangal a dhéanamh chun debugging 127.0.0.1 agus port 9000 a bhainistiú. Is é seo an calafort a úsáidtear de réir réamhshocraithe i PhpStorm faoi láthair. Tar éis duit na socruithe a shábháil, ní mór duit Apache a atosú leis an ordú speisialta:

 $ sudo systemctl restart apache2

Ansin ní mór duit PhpStorm a chumrú. Rith an clár, ansin oscail an roghchlár Rith -> Cuir Cumraíochtaí in Eagar. Osclófar fuinneog os do chomhair ina mbeidh ort an dífhabhtóir a chumrú.

XDEBUG a shocrú i PHPSTORM

Cliceáil ar an gcnaipe + agus roghnaigh PHP Remote Debugger ón liosta a osclaíonn:

XDEBUG A CHUMASÚ I PHPSTORM

Ní dhéanaimid aon rud a athrú sna socruithe, ní shonraímid ach ainm an mhodha dífhabhtaithe seo. Mura sonraítear an freastalaí óna mbeifear ag súil le naisc, glacfar le gach nasc.

XDEBUG a shocrú i PHPSTORM

Más gá duit an calafort lena nascfaidh Xdebug a athrú, oscail an Comhad roghchláir -> Socruithe -> PHP -> Dífhabhtú -> Seachfhreastalaí DBGp. Anseo is féidir leat an port atá ag teastáil a shonrú.

XDEBUG a shocrú i PHPSTORM

Is féidir linn a rá go bhfuil an IDE réidh anois. Anois cliceáil ar an ciaróg ar an mbarra uirlisí barr. Tosóidh an clár ag fanacht leis an dífhabhtóir a nascadh agus socróimid roinnt bristephointí sa chód trí chliceáil díreach os comhair na líne leis an gcód:

XDEBUG a shocrú i PHPSTORM

Níl fágtha anois ach an brabhsálaí a chumrú. Le haghaidh chrome is féidir leat a íoslódáil  síneadh speisialta. Suiteáil é agus oscail an leathanach ar mhaith leat a dhífhabhtú. Cliceáil ar an deilbhín síneadh agus roghnaigh Debug. Casfaidh deilbhín an tsínidh glas:

XDEBUG a shocrú i PHPSTORM

Athnuaigh an leathanach agus fill ar PHPStorm. Má rinneadh gach rud i gceart, cuirfear tús le seisiún dífhabhtaithe ansin. Nuair a thosaíonn tú ar an gclár den chéad uair, b’fhéidir go n-iarrfar ort an comhfhreagras a chumrú idir cosáin áitiúla chuig comhaid agus cinn chianda. Ní gá aon rud a chumrú anseo don fhreastalaí áitiúil. ach cliceáil Glac:

XDEBUG a shocrú i PHPSTORM

Tar éis seo, stopfaidh an dífhabhtóir a fhorghníomhú ag an brisphointe roghnaithe agus beidh comhéadan dífhabhtaithe le feiceáil sa chlár:

XDEBUG a shocrú i PHPSTORM

Anois déanaimis amach conas Xdebug PhpStorm agus Docker a shocrú.

PHP a dhífhabhtú i Docker

Is féidir go mbeadh roinnt castachta le Docker. Ós rud é go gcaithfidh an dífhabhtóir féin nascadh leis an IDE, is gá an t-óstach a chur ar aghaidh chuig an gcoimeádán. Ar chóras oibriúcháin Windows, is féidir é seo a dhéanamh ag baint úsáide as an seoladh host.docker.internal. Ach ar Linux, ní tharlaíonn sé seo de réir réamhshocraithe. Chun seoladh den sórt sin a chur leis, ní mór duit na línte seo a leanas a chur leis an docker-compose:

extra_hosts:

host.docker.internal: host-gateway

Bainimid úsáid as an struchtúr eolaire seo a leanas:

XDEBUG a shocrú i PHPSTORM

Breathnóidh an t-íosmhéid docker-compose.yaml mar seo:

 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

Níl le déanamh againn ach dhá choimeádán a dhearbhú, nginx и php-fpm . Ní dhéanaimid athruithe ar an gcéad cheann, ionas gur féidir leat an íomhá oifigiúil a ghlacadh, an fillteán foinse, an comhad cumraíochta a shuiteáil agus an port a chur ar aghaidh. Sa dara coimeádán ní mór duit Xdebug a shuiteáil agus a chumrú, mar sin beidh ort é a thiomsú bunaithe ar an gcoimeádán php oifigiúil. Maidir leis an gcoimeádán céanna, ní mór duit an treoir extra_hosts a shonrú; gan é, ní oibreoidh aon rud. Tá cumraíocht Nginx caighdeánach go leor freisin:

 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; } }

Seo mar a dhéantar próiseáil scripteanna PHP sa choimeádán php-fpm a chumrú, agus URLanna nach bhfuil ann a atreorú chuig index.php , atá caighdeánach go leor do go leor creataí agus CMS. I Dockerfile an choimeádáin php-fpm, tá an chuma air seo:

Suiteáilimid xdebug ag baint úsáide as pecl, agus ansin cóipeáil a chomhad cumraíochta isteach sa choimeádán. Comhad:

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

Tá Xdebug 3 do PHP 8 suiteáilte sa choimeádán toisc nach n-oibríonn an seanleagan leis an leagan seo den teanga a thuilleadh, mar sin úsáidtear an chomhréir cumraíochta nua. Bhuel, an t-óstach, host.docker.internal , a bhí cláraithe roimhe seo i docker-compose.yaml. Tá socrú docker PHPStorm xdebug críochnaithe. Ansin is féidir leat an tionscadal a rith:

 docker-compose up --build

Anois, mar atá sa rogha roimhe seo, is féidir leat modh dífhabhtaithe a chumasú sa bhrabhsálaí, athnuachan an leathanach agus nascfaidh an dífhabhtóir go rathúil leis an IDE, in ainneoin go bhfuil sé ag rith i Docker

XDEBUG a shocrú i PHPSTORM