Vis PHP feil som WordPress Admin Alerts

PHP-språket er allment vedtatt for mange webapplikasjoner som WordPress. Så kraftig som PHP er det har noen ulemper, men en av mine favorittfunksjoner i PHP er at den vil vise feil på nettsiden. Den nye verktøylinjen som ble introdusert i WordPress 3.3, forstyrrer denne funksjonaliteten. Verktøylinjen har en fast absolutt posisjon som dekker de første par linjene med PHP-feil.


Alternativer for å vise feil

Med den nye verktøylinjen som dekker PHP-feil, må vi bruke andre alternativer for feilsøking av våre temaer og plugins. Heldigvis for oss er det noen muligheter for oss å velge mellom.


plugins

Siden begynnelsen av de nye verktøylinje-pluginutviklerne har det kommet opp noen plugins som kan hjelpe oss med dette problemet. Her er et par plugins du kan bruke til å deaktivere verktøylinjen.

  • Old Skool Admin Head
  • Skjul verktøylinjeplugin
  • Fjern administrasjonsfelt fjerning
  • WordPress Admin Bar forbedret

Alle disse pluginene tilbyr forskjellige funksjoner, men de tillater oss alle å deaktivere verktøylinjen. Som vil tillate oss å se noen PHP feil som kommer vår vei. Den fine tingen med disse pluginene er at de kan aktiveres og deaktiveres når det trengs.


Feil pålogging

Løsningen for PHP-feil som foreslås av WordPress Core Team, er å bruke feillogging. Hvis du utvikler på WordPress, bør du allerede vite om WP_DEBUG-konstanten som er definert i wp-config.php-filen. Du kan også definere WP_DEBUG_LOG-konstanten. Her er et eksempel som WordPress Codex gir for å aktivere feilsøkingsloggen.

 define ('WP_DEBUG', true); // false hvis (WP_DEBUG) define ('WP_DEBUG_LOG', true); define ('WP_DEBUG_DISPLAY', false); @ini_set ( 'display_errors', 0); 

Dette vil sende eventuelle PHP-feil til en fil med navnet debug.log i wp-innholdmappen. Loggfeil som dette har opp og nedturer. Når du jobber med en kommersiell plugin eller når du arbeider i et lagmiljø der loggfeil er nødvendig. Dette er den beste løsningen for å spore feilene dine, men når du utvikler en plugin eller et tema på en mindre skala, er dette bare ikke praktisk. Når alt du trenger å gjøre er å sørge for at alle dine jeg er stiplede og T er krysset. Det kan være veldig frustrerende å åpne, lukke og åpne feilloggen hver gang du gjør en endring.


Vis feil som adminvarsler

Metoden jeg har vedtatt, er å skrive ut PHP-feil som adminvarsler. Jeg tror dette er den beste løsningen så langt. Ingen plugins er påkrevd, det er mer praktisk enn feillogging, og det kan bli igjen på plass uten å forstyrre layout og design av Administrasjonsområdet eller WordPress-temaene dine.

Koden som brukes for å oppnå dette er enkel, og jeg kan ikke helt forstå hvorfor dette ikke er en integrert del av WordPress Core. Følgende kode skal plasseres i din functions.php-fil eller i plugin for funksjonalitet.

 funksjonen admin_alert_errors ($ errno, $ errstr, $ errfile, $ errline) $ errorType = array (E_ERROR => 'FEIL', E_CORE_ERROR => 'KERNFELT', E_COMPILE_ERROR => 'COMPILE ERROR', E_USER_ERROR => 'BRUKERFeil 'E_RECOVERABLE_ERROR =>' RECOVERABLE ERROR ', E_WARNING =>' ADVARSEL ', E_CORE_WARNING =>' KERN ADVARSEL ', E_COMPILE_WARNING =>' COMPILE ADVARSEL ', E_USER_WARNING =>' BRUKER ADVARSEL ', E_NOTICE =>' MERKNAD ', E_USER_NOTICE = > 'USER NOTICE', E_DEPRECATED => 'DEPRECATED', E_USER_DEPRECATED => 'USER_DEPRECATED', E_PARSE => 'PARSING ERROR'); hvis (array_key_exists ($ errno, $ errorType)) $ errname = $ errorType [$ errno];  else $ errname = 'UNKNOWN ERROR';  ob_start ();?> 

Feil: [] på nett

Det er fire argumenter som sendes til admin_alert_errors () -funksjonen.

  • $ errno: Utfører nivået av feilen som er hevet. Hver feiltype har et nummer tilknyttet det. $ errno viser dette nummeret.
  • $ errstr: Utfører feilmeldingen.
  • $ errfile: Utfører navnet på filen som har feilen.
  • $ errline: Utfører linjen som har feilen.

$ ErrorType array definerer tittelen som brukes for hver feiltype.

f.eks. ADVARSEL Feil: [2] inkluderer (wuzup) [function.include]:

Disse kan være alt du vil. Det kan si "Wuzup G, du messet noe opp".

f.eks. ADVARSEL Wuzup G, du slo noe opp: [2] inkluderer (wuzup) [function.include]:

Jeg anbefaler ikke å bruke det til alt du gjør for en klient, med mindre de har en veldig god sans for humor, men du får ideen.

IF-setningen kontrollerer for å se om feil typen samsvarer med noen av feilkonstantene du definerte i $ errorType-array. Hvis ikke, vil feil tittelen bli vist som "UKJENT FEIL"

Den siste delen av funksjonen er hva som skal sendes ut. Klassen feil er en standard klasse innebygd i WordPress brukes til å style error admin varsler.

For å starte admin_alert_errors () -funksjonen, bruker du set_error_handler () -funksjonen. Den første parameteren er funksjonen som ble brukt til å vise feilene. I dette tilfellet admin_alert_errors () funksjonen. Det neste settet med parametere er PHP-feilkonstantene som du vil vise.

Hvis du har erfaring med å håndtere feilhåndtering, vil du legge merke til at E_STRICT ikke er inkludert. Dette skyldes at det er noen feil som kommer fra WordPress Core. Jeg er ikke sikker på om dette er noe savnet av Core WordPress-teamet eller om det er designelt, men det er ikke nødvendig å se disse feilene. Også, ved å bruke E_ALL i stedet for å notere, ser alle feilkonstantene ikke ut til å fungere. Hvis du bruker E_ALL, vil ikke alle feilene vises som adminvarsler.

Merk: Dette påvirker ikke måten feil vises på frontend på nettstedet ditt. Bare på administratorsidene.

et annet notat: Når jeg har WordPress-testdataene installert. Jeg mottar en DEPRECATED feil for class-simplepie.php filen.


Konklusjon

Vel, jeg håper dette hjelper deg med de irriterende PHP-feilene. Hvis noen har en annen løsning, vennligst legg det inn i kommentarene. Jeg vil gjerne se hva du har kommet med.