Feilsøking av PHP med en tekstredigerer og en kombinasjon av ekko, print_r og exit-samtaler er tilstrekkelig når det gjelder enkel kode. Men når din killer WordPress plugin vokser til flere tusen linjer som spenner over flere filer, vil denne metoden raskt bli kjedelig og feilaktig. Når du treffer det punktet, vil det være på tide å oppgradere til en ekstern feilsøking, slik at du raskt og enkelt kan gå gjennom hver linje med kode for å finne problemer.
En ekstern debugger er et program installert på server siden som avskjærer alle kjører PHP-kode. Blant andre funksjoner har den muligheten til å slutte å kjøre kode midt gjennomføring og sende informasjon til en ekstern klient, for eksempel et integrert utviklingsmiljø (IDE). Denne opplæringen vil dekke hvordan du bruker xdebug fjernkontrollen debugger og åpen kildekode Eclipse IDE sammen for å gå gjennom WordPress-kode for å feilsøke feil.
Jeg antar at du allerede har Apache / PHP / MySQL og et fungerende WordPress-installasjon som kjører på din lokale arbeidsstasjon. Hvis ikke, les vår veiledning om hvordan du konfigurerer et WordPress-utviklingsmiljø for Windows.
De mest oppdaterte instruksjonene finnes på xdebug-nettsiden.
Hvis du er på Windows med XAMPP for utvikling, er xdebug-binæret allerede inkludert, og du kan fortsette å konfigurere PHP.
Hvis du er på Mac OS X, anbefaler jeg at du compilerer fra kilde eller bruker PECL til å installere.
Hvis du er på Linux, kan du kanskje installere ved hjelp av distribusjonspakken din, eller du kan kompilere fra kilde / bruk PECL.
Du må legge disse to linjene til php.ini-filen din (som kan leve på /etc/php.ini
eller c: \ xampp \ php \ php.ini
eller et annet sted avhengig av plattformen din):
zend_extension = "/ absolute / path / to / xdebug.so" xdebug.remote_enable = 1
Når det er gjort, start på nytt Apache-serveren. Det er mange andre alternativer du kan konfigurere senere som forklares i xdebug-dokumentasjonen, men det bør være nok til å komme i gang.
Opprett en side som heter test.php i nettrotsmappen din, og legg til et anrop til phpinfo () -funksjonen:
Søk etter xdebug, og du bør finne en seksjon nederst på siden som ser slik ut:
Last ned Eclipse Classic fra Eclipse nedlastingssiden, pakke ut, kopier den til programkatalogen din, og start deretter.
Klikk på Hjelp-menyen, og installer deretter Programvare. Velg alternativet "Indigo" under "Arbeid med" -alternativet. Merk av i en av funksjonene "PHP Development Tools (PDT) Feature" og klikk deretter "Next".
Klikk gjennom de gjenværende trinnene i veiviseren for å fullføre installasjonen, og start omstart av Eclipse når du blir bedt om det.
Aktiver PHP-perspektivet ved å klikke på Åpne perspektiv-knappen i øverste høyre hjørne:
Velg deretter alternativet "Annet", velg PHP, og klikk deretter "OK":
Klikk på PHP-knappen for å gå til PHP-perspektivet:
Deretter går du til "File -> New -> PHP Project." Dette vil hente vinduet "Ny PHP-prosjekt". Du kan skrive inn "wordpress" eller hva du vil for prosjektnavnet ditt. Du bør velge "Opprett prosjekt på eksisterende sted (fra eksisterende kilde)" under "Innhold" og bla til WordPress-rotkatalogen. La standardene stå for de andre seksjonene, og klikk deretter på "Fullfør" -knappen.
Gå til "Window -> Preferences -> PHP -> Debug" og endre "PHP Debugger" -innstillingen fra Zend til XDebug.
Deretter går du til "Window -> Preferences -> PHP -> Debug -> Installed Debuggers" og dobbeltklikk XDebug. Endre alternativet "Godta eksternt økt (JIT)" fra "av" til "localhost" og klikk "OK".
Et bruddpunkt er en markør som forteller debuggeren å stoppe et programs utførelse på en bestemt linje med kode slik at du kan inspisere hva som skjer.
Dette er enkelt. Bare åpne filen som inneholder koden du vil inspisere (for eksempel index.php-filen i et tema du utvikler). Deretter dobbeltklikk på det grå området til venstre for linjen på venstre side av filvinduet. En blå prikk skal vises som den gjør på linje 20 i eksemplet nedenfor (index.php fra twentlyeleven-temaet).
Når du har satt inn et brytepunkt, åpner du en nettleser og går til ditt lokale WordPress-område, og legger til spørringsstrengen XDEBUG_SESSION_START = wordpress
som dette:
http: // localhost / sti / til / wordpress / XDEBUG_SESSION_START = wordpress
Dette vil fortelle xdebug å sette en cookie som den vil se etter på påfølgende sidelast. Hvis alt er konfigurert riktig, bør du se et varsel om at Eclipse har mottatt en innkommende økt. Klikk på "OK" for å godta, og så skal debug-visningen åpne på den første linjen i index.php.
Du kan inspisere variabler som for tiden er i bruk ved hjelp av vinduet "Variabler" -inspektør på høyre side. I eksemplet ovenfor er det ingen lokale variabler å se på, bare de globale $ _COOKIE-, $ _ENV-, $ _FILES-, $ _GET-, $ _POST-, $ _REQUEST-, $ _SERVER- og $ GLOBALS-variablene.
For å se et eksempel på mer nyttig informasjon, må du gå gjennom noen linjer med kode for å komme til The Loop. Eclipse "Debug" -vinduet har flere kontroller du bør forstå:
Klikk på "Fortsett" -knappen en gang. Eclipse debug-klienten bør neste pause på breakpointet du angir i temaets index.php-fil.
Klikk på "Step Into" -knappen. Dette vil ta deg inn i WordPress "have_posts" -funksjonen. Klikk på "Step Into" igjen, og du vil se den globale $ wp_query-variabelen vises i vinduet "Variabler".
Klikk "Step Return" for å avslutte funksjonen "have_posts", og du kommer tilbake i index.php-filen. I eksemplet vil dette etterlate deg ved en samtale til funksjonen "twentyeleven_content_nav". Du kan enten gå inn i den for å se hva som skjer hvis du er interessert, eller gå over den hvis du ikke er det.
Ved å klikke på "Step Over" tar du deg til anropet til The Loop. Stepping into "the_post" vil lære deg mye om hvordan WordPress henter data og skriver den til siden under The Loop. Hold øye med vinduet "Variabler" for å overvåke hvordan lokale og globale variabler endres når funksjonen utføres.
Du kan også gå gjennom din egen kode på samme måte for å se hvordan variabler blir manipulert ettersom koden kjører.
Når du har sett alt du vil se, klikker du på "Fortsett" -knappen, og bloggen din blir ferdig lastet som vanlig.
Hvis du klikker en kobling til en annen nettleserside, merk at debuggeren vil laste igjen, selv om XDEBUG_SESSION_START spørringsstrengen ikke legges til slutten av nettadressen.
Når du ikke lenger vil at Eclipse skal gå inn i feilsøkingsmodus når en side lastes på din lokale blogg, skriv bare inn et URL-anrop som ser slik ut i nettleseren din:
http: // localhost / sti / til / wordpress / XDEBUG_SESSION_STOP
Det vil slette xdebug-cookien, og sidene dine lastes normalt til du åpner en annen xdebug-økt.
Bruker du Eclipse og Xdebug for hardcore WordPress utvikling? Hvis ja, har du noen ekstra tips? Hvis ikke, hva hindrer deg fra dykking i?