Kako postaviti lokalno okruženje za otklanjanje pogrešaka u PHP-u

Nedavno sam se počeo više fokusirati na PHP i trebao sam postaviti lokalno okruženje za uklanjanje pogrešaka. Budući da nema puno vodiča o tome kako to učiniti, naišao sam na neke probleme kako pokrenuti i pokrenuti instalaciju.

Kombinirajući nekoliko tutorijala i provodeći nekoliko sati na nekoliko foruma, došao sam do ovog teksta. Aplikacija na kojoj radim pokreće se unutar kutije Vagrant koja je nekako klimava. Povremeno se sruši, tako da moram ponoviti ovo postavljanje i zato znam da ovo postavljanje funkcionira :).

Cilj ovog vodiča je pokrenuti Xdebug na vašem poslužitelju, a zatim usmjeriti PhpStorm na Xdebug.

Započnimo.

Preduvjeti

Ako na poslužitelju nemate instaliran Xdebug, ali koristite PHP7, to možete učiniti pomoću Prilagođenih uputa za instalaciju sa službenog web mjesta Xdebug ovdje.

Međutim, kako moj projekt koristi PHP5, morao sam to učiniti na staromodni način: potražiti ga na forumima .

U ovom uputstvu pretpostavit ću da imate instaliran Xdebug.

Početak rada

Prvo morate pronaći mjesto datoteke xdebug.so na vašem poslužitelju. Kopirajte mjesto negdje jer ćete ga kasnije koristiti.

locate xdebug.so

Sada morate unutar vašeg poslužitelja doći do mjesta: /etc/php5/apache2/conf.d/ i provjeriti postoji li tamo datoteka 20-xdebug.ini. Ako ne postoji, stvorite ga. Možete ga stvoriti pomoću naredbi kao što su dodir, vim, vi, nano i tako dalje.

Možete vidjeti da je moj projekt izrađen u PHP5, pa promijenite ime / mjesto mape prema vašoj verziji PHP-a.

Sada otvorite datoteku 20-xdebug.ini i zalijepite ovo u:

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”

Iz objašnjenja dolje napisane datoteke 20-xdebug.ini vidjet ćete da neke od ovih postavki nisu potrebne ili da su postavljene na zadanu vrijednost. Te vrijednosti čuvam u datoteci 20-xdebug.ini jer ih je dobro znati.

Objašnjenje datoteke 20-xdebug.ini:

  • xdebug.remote_enable - kontrolira hoće li Xdebug pokušati kontaktirati klijenta za uklanjanje pogrešaka koji sluša na hostu i priključku kako je postavljeno postavkama
  • xdebug.remote_port - Port na koji se Xdebug pokušava povezati na udaljenom hostu. Zadana vrijednost je 9000.
  • xdebug.remote_host - odabire hosta na kojem je pokrenut klijent za ispravljanje pogrešaka. Zadani je localhost.
  • xdebug.remote_autostart - kada je ova postavka postavljena na 1, Xdebug će pokušati pokrenuti sesiju udaljenog otklanjanja pogrešaka i pokušati se povezati s klijentom.
  • xdebug.remote_connect_back - Ako je omogućeno, postavka xdebug.remote_host se zanemaruje i Xdebug će se pokušati povezati s klijentom koji je poslao HTTP zahtjev. Zadana vrijednost je 0.
  • xdebug.remote_handler - Može biti ili 'php3' koji odabire stari izlaz programa za otklanjanje pogrešaka u stilu PHP 3, 'gdb' koji omogućuje GDB poput sučelja za otklanjanje pogrešaka ili 'dbgp' - protokol za otklanjanje pogrešaka. DBGp protokol je jedini podržani protokol. Zadana vrijednost je dbgp.
  • xdebug.remote_mode - Odabire kada se pokreće veza za otklanjanje pogrešaka. Ova postavka može imati dvije različite vrijednosti: req - Xdebug će se pokušati povezati s klijentom za uklanjanje pogrešaka čim se skripta pokrene. jit - Xdebug će se pokušati povezati s klijentom za uklanjanje pogrešaka čim se dogodi stanje pogreške.
  • xdebug.remote_cookie_expire_time - Ova se postavka može koristiti za povećanje (ili smanjenje) vremena u kojem sesija udaljenog otklanjanja pogrešaka ostaje aktivna putem kolačića sesije. Zadana vrijednost je 3600.
  • xdebug.remote_log - Ako se postavi na vrijednost, koristi se kao naziv datoteke u datoteku u koju se bilježe sve komunikacije s udaljenim programom za pronalaženje pogrešaka.
  • xdebug.var_display_max_depth - Kontrolira koliko su ugniježdene razine elemenata niza i svojstava objekta kada se varijable prikazuju bilo s xdebug_var_dump (), xdebug.show_local_vars ili kroz Tragovi funkcija. Zadana vrijednost je 3.
  • xdebug.profiler_enable - Omogućuje Xdebugov profiler koji stvara datoteke u direktoriju izlaza profila. Zadana vrijednost je 0.
  • xdebug.idekey - Kontrolira koji IDE ključ Xdebug treba proslijediti obrađivaču DBGp programa za otklanjanje pogrešaka. Zadana vrijednost temelji se na postavkama okoline.

Spremite datoteku i ponovno pokrenite Apache poslužitelj:

sudo service apache2 restart

Xdebug i PhpStorm

Prvo morate otvoriti PhpStorm i odabrati Run> Edit Configuration. Tamo biste trebali odabrati + (Dodaj novu konfiguraciju) i odabrati "PHP Remote Debug".

Promijenite naziv konfiguracije iz "Neimenovano" u nešto drugo. Naziv "Vodič" odabrao sam iz očitih razloga;) Zatim provjerite "Filtriraj vezu za otklanjanje pogrešaka pomoću IDE ključa".

Odaberite gumb Poslužitelji (...), a zatim odaberite + (Dodaj novi poslužitelj).

  • Preimenujte svoj poslužitelj u nešto umirujuće. U ovom sam primjeru odabrao "localbackend1".
  • U polje Host upišite svoj lokalni host. Postavite program za ispravljanje pogrešaka na Xdebug.
  • Odaberite "Koristi mapiranje puta" i pokažite na mapu svoje aplikacije.

Kliknite Primijeni. Vratit ćete se u prethodni prozor gdje ćete vidjeti da je IDE ključ moguće uređivati ​​i sada morate unijeti ključ. Uvijek stavim "phpstorm" ili nešto slično.

Primijetit ćete da je IDE ključ "phpstorm" već u vašoj datoteci 20-xdebug.ini:

xdebug.idekey=”phpstorm”

Također biste trebali odabrati samo jednu instancu jer će vas to spriječiti u pokretanju više instanci istog projekta.

Kliknite na Apply and Voilà!

Završili ste s postavljanjem!

Ispitivanje i zamatanje

Sad ste gotovi. Trebali biste vidjeti konfiguraciju vodiča koju smo stvorili u gornjem desnom kutu PhpStorma.

Možete ga testirati postavljanjem točke prekida u svom projektu. Kliknite gumb "bug" u konfiguracijskom prozoru Vodiča, a zatim pokrenite svoju aplikaciju.

To bi trebalo biti sve, ako je sve u redu, trebali biste pogoditi točku prekida.

I ne zaboravite, ništa ne može nadmašiti osjećaj da vidite vrijednosti vremena izvođenja tijekom uklanjanja pogrešaka.

Hvala na čitanju! Pogledajte još članaka poput ovog i druge zabavne stvari koje izrađujem na svom Github profilu: //github.com/GoranAviani