wiki.phpfreakz.nl
Aanmelden Artikel Overleg Bewerk Geschiedenis Go to the site toolbox

Troubleshooter

--Taco 20 mrt 2009 16:48 (CET)

Deze pagina leidt je kort en krachtig door de meestvoorkomende problemen. Vergis je niet: de meeste dingen staan al op de Wiki. Het probleem is meestal alleen dat je het moet oplossen voor je het kan vinden...

Inhoud

Stap 1: Regel een foutmelding

Ik neem aan dat er iets fout gaat. Om het op te kunnen lossen, moet je weten wat er fout gaat. Krijg je een beschrijving van het probleem? Een Error, een Warning, een Notice? Als je er een heleboel krijgt, is de eerste vaak het probleem. Krijg je geen foutmelding? Zet dit dan eens bovenaan je script

<?php
ini_set('display_errors', 'On');
error_reporting(E_ALL | E_STRICT);
?>

Deze code zorgt ervoor dat PHP alle foutmeldingen die optreden ook daadwerkelijk op je scherm neerzet.

LET OP! Zorg ervoor dat je deze code alleen gebruikt tijdens de testfase van je website! Je bezoekers hebben niks met jouw foutmeldingen te maken: in het minst erge geval zien ze een lelijke foutmelding en in het ergste geval verkrijgen ze zo vitale informatie over jouw server en website.

Stap 2: Los de foutmelding op

Je hebt nu een foutmelding. Je hebt dan een bestand en een regelnummer, dus je weet waar je moet zoeken! Grote kans dat het één van deze is:

Staat je foutmelding er niet tussen, loop dan de php-manual en de zoekmachines eens af. Grote kans dat iemand anders hetzelfde probleem ook al eens heeft gehad. Los op deze manier één voor één de foutmeldingen op. Geen foutmeldingen meer en toch nog problemen? Op naar stap 3!

Stap 3: Inhoudelijk debuggen

Je code is correct, alle foutmeldingen zijn weggewerkt. Toch doet de code niet wat je wilt. Wat nu? Het is blijkbaar geen typefout of vergeten haakje: De fout zit dus in de logica van je code. Het is tijd om te gaan debuggen! Een absolute must om fouten in logica te kunnen vinden (en typefouten etc te voorkomen) is overzichtelijk programmeren. Daarbij reken ik ook (als het van toepassing is) overzichtelijk SQL. Is je code een zooitje, werk dan eerst die pagina's eens door, grote kans dat de fout dan vanzelf opvalt.

Heb je geen idee meer waar de fout kan zitten, begin dan met zoveel mogelijk informatie te vragen aan PHP als maar lukt. Gebruik de onmisbare functie var_dump() om:

  • Bij een if-je, te controleren welk stuk code wordt uitgevoerd.
  • Bij een while, relevante data bij elke uitvoering van de lus te controleren.
  • Bij een formulier, de $_POST-array te bekijken of erin staat wat je verwacht
  • Bij een query, de sql-string en het resultaat te bekijken
  • etc, etc

Een andere truc is grote stukken code tijdelijk weg te halen met comments /* */. Versimpel je code verder en verder en bekijk steeds of de fout er nog is of niet.

Uiteindelijk hou je als het goed is maar een paar regels over waar de fout in kan zitten. Controleer nog eens of je de functies die erin staan goed gebruikt. of de variabelenamen kloppen, etc. Als je deze regels in een nieuw bestandje los opnieuw typt, krijg je de fout dan ook? Meestal vind je op deze manier de fout. Zo niet, dan kan je met een klein stuk code de fout reproduceren. Je hebt nu alle informatie bij de hand om effectief hulp te vragen.

Stap 4: Vraag hulp

Het is tijd om hulp te vragen... Gelukkig zijn er ongelooflijk veel mensen die al jaren en jaren met PHP werken en waarschijnlijk zelf al eens tegen dezelfde problemen aan zijn gelopen. Gebruik zoekmachines om het internet of de fora van phpfreakz af te struinen. Geen resultaat? Lees even de tips door over vragen stellen en antwoord krijgen en open een thread! Je kan nu toelichten wat je wil, wat je hebt geprobeerd. Je hebt een stukje overzichtelijke code om de fout te reproduceren. Als je dit allemaal in je vraag zet, is de oplossing nabij!

Site Toolbox:

Persoonlijke hulpmiddelen
De laatste wijziging op deze pagina vond plaats op 23 mrt 2010 21:14. - Deze pagina werd 2.272 maal bekeken. - Disclaimers - Over PFZWIKI