CMS-kursen

Vanliga fel och felmeddelanden

Lär dig känna igen de vanligaste felen och läsa vad PHP försöker säga.

Varför fel dyker upp sent

PHP kompileras inte i förväg, och språket är dynamiskt typat. Det betyder att många fel upptäcks först när just den raden körs. En sida kan fungera i veckor tills någon hamnar i en gren av koden som innehåller ett fel.

Vanliga fel:

  • saknade semikolon
  • klammerparenteser som inte stängs
  • odefinierade variabler, ofta på grund av stavfel
  • felaktiga arraynycklar
  • logiska fel: villkor som inte fungerar som tänkt

Läs felmeddelandet

Ett felmeddelande innehåller tre saker: typ av fel, vad som är fel och var (fil och rad).

Parse error: syntax error, unexpected token "echo", expecting "," or ";" in test.php on line 4
Typ Betyder Vanlig orsak
Parse error Koden går inte att tolka. Ingenting körs. Saknat ;, {, } eller citattecken
Warning Något är fel, men koden fortsätter. Odefinierad variabel eller arraynyckel, till exempel ett $_POST-värde som inte finns
Fatal error Koden stoppas på den raden. Anrop till en funktion eller klass som inte finns

Vid ett Parse error pekar radnumret på stället där PHP upptäckte felet. Själva felet ligger ofta på raden före.

Parse error

Kör koden och läs felmeddelandet. Rätta sedan felet.

Warning

Här körs koden, men med en varning. Vad är fel?

Fatal error

Här stoppas koden mitt i. Vilken rad skrivs aldrig ut?

Logiska fel

Det svåraste felet ger inget felmeddelande alls: koden körs, men gör fel sak. Vad är fel här?

= tilldelar ett värde, medan == och === jämför. if ($alder = 18) sätter alltså åldern till 18, och eftersom 18 räknas som sant körs alltid den första grenen. Felet är så vanligt att det är värt att kontrollera först när ett villkor beter sig konstigt.