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.
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:
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ú.
Cliceáil ar an gcnaipe + agus roghnaigh PHP Remote Debugger ón liosta a osclaíonn:
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.
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ú.
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:
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:
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:
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:
Anois déanaimis amach conas Xdebug PhpStorm agus Docker a shocrú.
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:
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