Kaip nustatyti vietinę derinimo aplinką PHP

Neseniai pradėjau daugiau dėmesio skirti PHP ir turėjau sukurti vietinę derinimo aplinką. Kadangi nėra daug pamokų, kaip tai padaryti, susidūriau su tam tikromis problemomis, kaip pradėti ir paleisti sąranką.

Sujungęs keletą pamokų ir praleisdamas kelias valandas keliuose forumuose, sugalvojau šį tekstą. Programa, kurioje dirbu, veikia „Vagrant“ dėžutės viduje, kuri kažkaip dreba. Retkarčiais ji žlunga, todėl turiu perdaryti šią sąranką, todėl žinau, kad ši sąranka veikia :).

Šios pamokos tikslas yra priversti „Xdebug“ veikti jūsų serveryje, tada nukreipti „PhpStorm“ į „Xdebug“.

Pradėkime.

Būtinos sąlygos

Jei jūsų serveryje nėra įdiegta „Xdebug“, bet naudojate PHP7, galite tai padaryti naudodami pritaikytas diegimo instrukcijas iš oficialios „Xdebug“ svetainės čia.

Tačiau, kadangi mano projektas naudoja PHP5, turėjau tai padaryti senamadiškai: ieškoti forumuose .

Šioje pamokoje manysiu, kad turite įdiegtą „Xdebug“.

Darbo pradžia

Pirmiausia turite rasti failo xdebug.so vietą savo serveryje. Nukopijuokite vietą kažkur, nes vėliau ją naudosite.

locate xdebug.so

Dabar serveryje turite pereiti į vietą: /etc/php5/apache2/conf.d/ ir patikrinti, ar ten yra failas 20-xdebug.ini. Jei jo nėra, sukurkite. Galite sukurti tokią komandą kaip „touch“, „vim“, „vi“, „nano“ ir pan.

Galite pamatyti, kad mano projektas yra sukurtas PHP5, todėl pakeiskite savo aplanko pavadinimą / vietą pagal savo PHP versiją.

Dabar atidarykite failą 20-xdebug.ini ir įklijuokite tai:

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”

Iš 20-xdebug.ini failo, kuris parašytas žemiau, paaiškinimo pamatysite, kad kai kurių iš šių nustatymų nereikia arba jie yra nustatyti kaip numatytoji reikšmė. Šias reikšmes laikau faile 20-xdebug.ini, nes jas gerai žinoti.

20-xdebug.ini failo paaiškinimas:

  • xdebug.remote_enable - kontroliuoja, ar „Xdebug“ turėtų bandyti susisiekti su derinimo klientu, kuris klausosi pagrindiniame kompiuteryje ir prievade, kaip nustatyta nustatymuose
  • xdebug.remote_port - prievadas, prie kurio „Xdebug“ bando prisijungti nuotoliniame pagrindiniame kompiuteryje. Numatytasis yra 9000.
  • xdebug.remote_host - pasirenka pagrindinį kompiuterį, kuriame veikia derinimo klientas. Numatytasis yra localhost.
  • xdebug.remote_autostart - kai šis parametras nustatytas į 1, „Xdebug“ bandys pradėti nuotolinio derinimo sesiją ir bandys prisijungti prie kliento.
  • xdebug.remote_connect_back - jei įjungta, parametras xdebug.remote_host nepaisomas ir „Xdebug“ bandys prisijungti prie kliento, kuris pateikė HTTP užklausą. Numatytasis yra 0.
  • xdebug.remote_handler - gali būti arba „php3“, kuris parenka seną PHP 3 stiliaus derintuvo išvestį, „gdb“, įgalinantis GDB kaip derinimo sąsają, arba „dbgp“ - derintuvo protokolas. DBGp protokolas yra vienintelis palaikomas protokolas. Numatytasis yra dbgp.
  • xdebug.remote_mode - parenka, kada pradedamas derinimo ryšys. Šis nustatymas gali turėti dvi skirtingas reikšmes: req - „Xdebug“ bandys prisijungti prie derinimo kliento, kai tik scenarijus bus paleistas. jit - „Xdebug“ bandys prisijungti prie derinimo kliento tik tada, kai įvyksta klaidos sąlyga.
  • xdebug.remote_cookie_expire_time - šį parametrą galima naudoti norint padidinti (arba sumažinti) laiką, kurį nuotolinio derinimo sesija išlieka gyva per sesijos slapuką. Numatytasis yra 3600.
  • xdebug.remote_log - jei nustatyta reikšmė, ji naudojama kaip failo, į kurį užregistruojami visi nuotolinio derintuvo ryšiai, failo vardas.
  • xdebug.var_display_max_depth - kontroliuoja, kiek masyvo elementų ir objektų ypatybių yra įdėtųjų lygių, kai kintamieji rodomi su xdebug_var_dump (), xdebug.show_local_vars arba per Funkcijų pėdsakus. Numatytasis yra 3.
  • xdebug.profiler_enable - įgalina „Xdebug“ profilį, kuris sukuria failus profilio išvesties kataloge. Numatytasis yra 0.
  • xdebug.idekey - valdo, kurį IDE raktą „Xdebug“ turėtų perduoti DBGp derintuvo tvarkytuvui. Numatytasis nustatymas grindžiamas aplinkos nustatymais.

Išsaugokite failą ir iš naujo paleiskite „Apache“ serverį:

sudo service apache2 restart

„Xdebug“ ir „PhpStorm“

Pirmiausia turite atidaryti „PhpStorm“ ir pasirinkti Vykdyti> Redaguoti konfigūraciją. Čia turėtumėte pasirinkti + (Pridėti naują konfigūraciją) ir pasirinkti „PHP Remote Debug“.

Pakeiskite konfigūracijos pavadinimą iš „Unnamed“ į kažką kitą. Dėl aiškių priežasčių pasirinkau pavadinimą „Pamoka“;) Tada patikrinkite „Filtruoti derinimo ryšį pagal IDE raktą“.

Pasirinkite mygtuką Serveriai (…), tada pasirinkite + (Pridėti naują serverį).

  • Pervardykite savo serverį kažkuo raminančiu. Šiame pavyzdyje pasirinkau „localbackend1“.
  • Laukelyje „Pagrindinis“ įveskite savo vietinį kompiuterį. Nustatykite derintuvą į „Xdebug“.
  • Pasirinkite „Naudoti kelio atvaizdavimą“ ir nukreipkite pelę į savo programos aplanką.

Spustelėkite Taikyti. Jūs grįšite į ankstesnį langą, kuriame pamatysite, kad IDE raktą galima redaguoti, o dabar turite įvesti raktą. Aš visada dedu „phpstorm“ ar kažką panašaus.

Jūs pastebėsite, kad IDE raktas „phpstorm“ jau yra jūsų faile 20-xdebug.ini:

xdebug.idekey=”phpstorm”

Taip pat turėtumėte pasirinkti tik vieną egzempliorių, nes tai neleis paleisti daugiau nei vieno to paties projekto egzemplioriaus.

Spustelėkite Taikyti ir „Voilà“!

Jūs baigėte sąranką!

Testavimas ir apvyniojimas

Dabar jūs baigėte. Viršutiniame dešiniajame „PhpStorm“ kampe turėtumėte pamatyti mūsų sukurtą „Tutorial“ konfigūraciją.

Galite tai išbandyti nustatydami lūžio tašką savo projekte. „Tutorial“ konfigūracijos lange spustelėkite mygtuką „klaida“ ir paleiskite programą.

Tai turėtų būti viskas, jei viskas gerai, turėtumėte pasiekti lūžio tašką.

Ir atminkite, kad niekas nepaleidžia jausmo, kai matote bėgimo laiko vertes derindami.

Ačiū, kad skaitėte! Peržiūrėkite daugiau panašių straipsnių ir kitų įdomių dalykų, kuriuos sukuriu savo „Github“ profilyje: //github.com/GoranAviani