de Ray Naldo

Depanare multi-utilizatori în PhpStorm

Folosind Xdebug și DBGp Proxy

Depanare multi utilizatori in PhpStorm
Fotografie de Philipp Katzenberger pe Unsplash

„Eh, așteaptă un minut … Nu o folosești xdebug.remote_connect_back care a fost introdus de la Xdebug 2.1? “

Sigur, dacă serverul web este accesibil doar de către dezvoltatori (de exemplu, un server de dezvoltare privat) și dacă nu rulează în spatele unui firewall NATted și dacă doriți ca acest ghid să se încheie aici. Vezi IF-urile alea? Personal, nu-mi place IF în programare sau în viață. Deci, acest ghid va lua o cale mai lungă, care nu are nevoie de un IF pentru a porni (sau cel puțin mai puține IF-uri), adică folosind proxy-ul DBGp de la Xdebug.

Când se utilizează un proxy, extensia PHP Xdebug nu se mai conectează direct la PhpStorm, ci se conectează la serverul proxy DBGp. La rândul lor, toți dezvoltatorii din echipă se conectează la acel proxy. Fiecare dezvoltator are o sesiune de depanare separată care rulează peste acest proxy, ceea ce face posibilă depanarea multi-utilizator a aceluiași cod pe același server.

Depanare multi utilizatori in PhpStorm
https://www.jetbrains.com/help/phpstorm/multiuser-debugging-via-xdebug-proxies.html

Deci, cu proxy-ul DBGp puteți limita cine se poate conecta la proxy și este posibil să aveți mai mulți dezvoltatori care depanează același server web care rulează în spatele unui firewall NATted.

Rularea unui proxy DBGp vă permite, de asemenea, să evitați problemele NAT în care (așa cum se vede din PHP + Xdebug pe server) toate conexiunile par să provină de la același IP (deoarece rețeaua dvs. internă este NATted). În acest caz, puteți rula pur și simplu proxy-ul dbgp pe computerul dvs. NAT, configurați xdebug.remote_host setarea la adresa IP a mașinii dvs. NAT și configurați IDE-urile pentru a vă conecta la proxy-ul care rulează la <NAT-machine>;: 9001.

https://derickrethans.nl/debugging-with-multiple-users.html

Înființat

Mapările între folderele proiectului și folderele de pe server ar trebui să fie făcute corect în PhpStorm mai întâi, pentru ca depanarea să funcționeze.

Configurare server web

Deși acest ghid presupune că serverul web rulează pe Linux, ghidul ar putea fi utilizat și pe servere web non-Linux cu ușoare modificări.

1. Instalați Xdebug.

# PHP 7+pecl install xdebug  # PHP 5.6.xpecl install xdebug-2.5.5

2. Activați extensia Xdebug, apoi adăugați următoarele Configurare Xdebug la php.ini:

[xdebug]zend_extension="<full_path_to_xdebug.so>"
; debugger settingsxdebug.remote_enable=1xdebug.remote_host=127.0.0.1xdebug.remote_port=9000

Pentru acest ghid, proxy-ul DBGp va rula pe aceeași mașină cu serverul web și va utiliza portul implicit al Xdebug, deci 127.0.0.1:9000.

3. Descărcați și instalați proxy DBGp pentru depanare la distanță de la Pachetul de depanare la distanță Komodo, în special pentru sistemul de operare al serverului dvs. web. Acest ghid va folosi clientul de depanare la distanță Linux și PHP pe 64 de biți v11.1.0. Extrageți arhiva; pentru simplitate extrag tot conținutul în directorul meu de origine, adică /home/ray/.

4. Rulați proxy DBGp executând pydbgpproxy fișier cu parametri:

  • -d <ip_address:port> pentru a seta adresa IP și portul mașinii care va primi conexiunea de depanare de la serverul web
  • -i <ip_address:port> pentru a seta adresa IP și portul mașinii care va primi conexiunea de depanare de pe computerul dezvoltatorului

În acest ghid, serverul web și proxy-ul DBGp vor fi rulate pe aceeași mașină. Dacă adresa IP este 10.211.1.32 și vrem să rulăm proxy-ul pe port 9001 atunci comanda va fi:

pydbgpproxy -d 127.0.0.1:9000 -i 10.211.1.32:9001

Pentru comoditate, am putea folosi acest script, salvat ca start-dbgp-proxy.sh.
L-am plasat în același director ca pydbgpproxy adică /home/ray/start-dbgp-proxy.sh):

ip=$(hostname -I | awk '{$1=$1};1')pydbgpproxy -d 127.0.0.1:9000 -i $ip:9001

5. Asigurați-vă că permiteți conexiunea de la localhost pe port 9000, și de la mașinile de dezvoltator de pe port 9001.

6. Aleargă start-dbgp-proxy.sh. Adăugați permisiunea de executare a fișierului dacă nu o puteți rula.

start-dbgp-proxy.sh

Asigurați-vă că poate fi rulat fără probleme.

INFO: dbgp.proxy: starting proxy listeners.  appid: 30430INFO: dbgp.proxy:     dbgp listener on 127.0.0.1:9000INFO: dbgp.proxy:     IDE listener on  10.211.1.32:9001

7. (Opțional) Pornire automată start-dbgp-proxy.sh la fiecare pornire a mașinii folosind crontab.

Editați crontab:

crontab -e

Adăugați o lucrare cron pentru a porni automat start-dbgp-proxy.sh la fiecare pornire:

@reboot /home/ray/start-dbgp-proxy.sh

Configurare client

1. Accesați meniul Tools > DBGp Proxy > Register IDE pe PhpStorm.

1611526507 813 Depanare multi utilizatori in PhpStorm

2. Umpleți IDE key cu șir unic între dezvoltatori. CompletatiHost șiPort cu adresa IP și portul proxy-ului DBGp (parametru -i pe Configurare server # 4).

1611526507 274 Depanare multi utilizatori in PhpStorm

3. Faceți clic pe OK. Ar trebui să vedeți o fereastră pop-up de notificare de succes. Dacă nu o vedeți, înregistrați din nou IDE prin Tools > DBGp Proxy > Register IDE. Dacă nu a reușit sau doriți să modificați configurația, faceți-ot via Tools > DBGp Proxy > Configuratie …

4. (Opțional) Dacă doriți să inițiați conexiunea de depanare din browserul web, este recomandat să instalați o extensie de depanare în browserul dvs.: Xdebug Helper Firefox sau Xdebug Helper Chrome. Apoi configurați Xdebug Helper.

1611526507 885 Depanare multi utilizatori in PhpStorm

În Firefox, faceți clic dreapta pe pictograma Xdebug Helper> Gestionați extensia …> Opțiuni Pe Chrome, faceți clic dreapta pe pictograma Xdebug Helper> Opțiuni

1611526508 904 Depanare multi utilizatori in PhpStorm

Completați și salvați IDE key cu același șir unic ca atunci când înregistrați IDE (Pasul 2).

Începeți depanarea

1. Setați punctele de întrerupere pe PhpStorm.

2. Începeți să ascultați conexiunea de depanare în PhpStorm făcând clic pe butonul „telefon” din bara de instrumente din dreapta sus sau din meniu Run > Start Listening for PHP Debug Connections. Acest lucru va permite PhpStorm să reacționeze și deschide automat fereastra de depanare la pornirea unei sesiuni de depanare.

1611526508 833 Depanare multi utilizatori in PhpStorm

3. Activați depanatorul Xdebug atunci când faceți o cerere. Conform Documentație Xdebug există 3 moduri de a face acest lucru. Dar IMHO, cel mai bun mod care funcționează pentru toate tipurile de metode HTTP este setarea unui cookie numit XDEBUG_SESSION cu valoare <IDE_key> care este același șir unic când înregistrăm IDE-ul nostru la DBGp proxy (Configurare Client # 2).

  • În browserul web, cookie-ul va fi setat automat prin extensia Xdebug Helper
1611526509 583 Depanare multi utilizatori in PhpStorm
  • În Postman, modulul cookie poate fi setat în Cerere anteturi
1611526509 424 Depanare multi utilizatori in PhpStorm

4. Rulați scriptul cu cookie-ul deja setat.

5. La succes, PhpStorm va afișa automat fereastra de depanare.

1611526509 485 Depanare multi utilizatori in PhpStorm

6. Asigurați-vă că anulați / nu trimiteți cookie-ul pentru a dezactiva depanarea și opriți ascultarea conexiunii de depanare în PhpStorm dacă nu efectuați nicio depanare. Dacă nu reușiți să faceți acest lucru, proxy-ul DBGp se blochează atunci când există prea multe conexiuni suspendate.

Sper că acest ghid funcționează pentru dvs.

Mulțumesc că ai citit!

Referințe