Sådan oprettes et lokalt debugging-miljø i PHP

For nylig begyndte jeg at fokusere mere på PHP, og jeg havde brug for at oprette et lokalt debugging-miljø. Da der ikke er mange tutorials om, hvordan man gør det, har jeg stødt på nogle problemer med, hvordan installationen kører.

Ved at kombinere et par selvstudier og bruge et par timer på flere fora kom jeg op med denne tekst. Den app, jeg arbejder på, kører inde i en Vagrant-boks, der på en eller anden måde er rystende. Det kollapser fra tid til anden, så jeg er nødt til at foretage denne opsætning igen, og derfor ved jeg, at denne opsætning fungerer :).

Målet med denne vejledning er at få Xdebug til at arbejde på din server og derefter pege PhpStorm på Xdebug.

Lad os komme igang.

Forudsætninger

Hvis du ikke har Xdebug installeret på din server, men bruger PHP7, kan du gøre det ved at bruge skræddersyede installationsinstruktioner fra det officielle Xdebug-sted her.

Da mit projekt bruger PHP5, har jeg dog været nødt til at gøre det på den gammeldags måde: at slå det op på fora .

I denne vejledning antager jeg, at du har Xdebug installeret.

Kom godt i gang

Først skal du finde placeringen af ​​xdebug.so-filen på din server. Kopier placeringen et eller andet sted, som du vil bruge den senere.

locate xdebug.so

Nu skal du navigere inde på din server til en placering: /etc/php5/apache2/conf.d/ og kontrollere, om filen 20-xdebug.ini findes der. Hvis den ikke findes, skal du oprette en. Du kan oprette en ved hjælp af kommandoer som touch, vim, vi, nano og så videre.

Du kan se, at mit projekt er lavet i PHP5, så skift mappenavn / placering i henhold til din version af PHP.

Åbn nu 20-xdebug.ini-filen og indsæt den i:

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”

Fra forklaringen på filen 20-xdebug.ini, der er skrevet nedenfor, vil du se, at nogle af disse indstillinger ikke er nødvendige, eller at de er indstillet til en standardværdi. Jeg gemmer disse værdier i filen 20-xdebug.ini, fordi de er gode at vide.

Forklaring af filen 20-xdebug.ini:

  • xdebug.remote_enable - styrer, om Xdebug skal prøve at kontakte en debug-klient, der lytter på værten og porten som angivet med indstillingerne
  • xdebug.remote_port - Den port, som Xdebug forsøger at oprette forbindelse til på den eksterne vært. Standard er 9000.
  • xdebug.remote_host - Vælger den vært, hvor fejlretningsklienten kører. Standard er localhost.
  • xdebug.remote_autostart - når denne indstilling er indstillet til 1, forsøger Xdebug at starte en ekstern debugging-session og forsøge at oprette forbindelse til en klient.
  • xdebug.remote_connect_back - Hvis det er aktiveret, ignoreres indstillingen xdebug.remote_host, og Xdebug vil forsøge at oprette forbindelse til klienten, der fremsatte HTTP-anmodningen. Standard er 0.
  • xdebug.remote_handler - Kan enten være 'php3', der vælger den gamle PHP 3-stil debuggeroutput, 'gdb', der muliggør GDB-lignende debugger-interface eller 'dbgp' - debugger-protokollen. DBGp-protokollen er den eneste understøttede protokol. Standard er dbgp.
  • xdebug.remote_mode - Vælger, hvornår en debugforbindelse initieres. Denne indstilling kan have to forskellige værdier: req - Xdebug forsøger at oprette forbindelse til debug-klienten, så snart scriptet starter. jit - Xdebug forsøger kun at oprette forbindelse til debug-klienten, så snart der opstår en fejltilstand.
  • xdebug.remote_cookie_expire_time - Denne indstilling kan bruges til at øge (eller formindske) den tid, hvor den eksterne fejlretningssession forbliver i live via session-cookien. Standard er 3600.
  • xdebug.remote_log - Hvis den er indstillet til en værdi, bruges den som filnavn til en fil, som al ekstern debuggerkommunikation er logget på.
  • xdebug.var_display_max_depth - Styrer, hvor mange indlejrede niveauer af matrixelementer og objektegenskaber er, når variabler vises med enten xdebug_var_dump (), xdebug.show_local_vars eller gennem funktionsspor. Standard er 3.
  • xdebug.profiler_enable - Aktiverer Xdebugs profil, der opretter filer i profiloutputmappen. Standard er 0.
  • xdebug.idekey - Kontrollerer, hvilken IDE-nøgle Xdebug skal videregives til DBGp-fejlfindingshåndteringen. Standard er baseret på miljøindstillinger.

Gem filen, og genstart Apache-serveren:

sudo service apache2 restart

Xdebug og PhpStorm

Først skal du åbne PhpStorm og vælge Kør> Rediger konfiguration. Der skal du vælge + (Tilføj ny konfiguration) og vælge “PHP Remote Debug”.

Skift konfigurationsnavnet fra “Unnamed” til noget andet. Jeg har valgt navnet "Tutorial" af åbenlyse grunde;) Kontroller derefter "Filtrer fejlretningsforbindelse ved IDE-nøgle".

Vælg knappen Servere (...), og vælg derefter + (Tilføj ny server).

  • Omdøb din server til noget mere beroligende. Jeg har valgt “localbackend1” i dette eksempel.
  • Indtast din lokale vært i feltet Felt. Indstil debugger til Xdebug.
  • Vælg "Brug sti-kortlægning" og peg på mappen til din app.

Klik på Anvend. Du vil blive returneret til det forrige vindue, hvor du vil se, at IDE-nøglen kan redigeres, og nu skal du indtaste en nøgle. Jeg sætter altid "phpstorm" eller noget lignende.

Du vil bemærke, at IDE-nøglen "phpstorm" allerede er i din 20-xdebug.ini-fil:

xdebug.idekey=”phpstorm”

Du skal også kun vælge En enkelt forekomst, da det forhindrer dig i at starte mere end en forekomst af det samme projekt.

Klik på for at ansøge og Voilà!

Du er færdig med opsætningen!

Test og indpakning

Nu er du færdig. Du skulle se den tutorial-konfiguration, vi oprettede i øverste højre hjørne af PhpStorm.

Du kan teste det ved at indstille et brudpunkt i dit projekt. Klik på knappen “bug” i konfigurationsvinduet i Tutorial, og kør derefter din app.

Det burde være alt, hvis alt er i orden, skal du ramme brudpunktet.

Og husk, intet slår følelsen af ​​at se værdier for kørselstid under fejlretning.

Tak fordi du læste! Tjek flere artikler som denne og andre sjove ting, jeg laver på min Github-profil: //github.com/GoranAviani