CMS-kursen

Verktyg för felsökning

Ställ in vilka fel som visas och skriv ut variabler för att se vad koden faktiskt gör.

Inställningar i php.ini

Två inställningar i php.ini styr felhanteringen:

error_reporting = E_ALL
display_errors = On
  • error_reporting anger vilka fel som ska rapporteras. E_ALL betyder alla.
  • display_errors anger om felen ska visas i utskriften.

Du skapade php.ini från php.ini-development, där båda redan är påslagna. Kom ihåg att starta om php -S efter ändringar.

På en publik webbplats ska display_errors vara avstängt. Felmeddelanden avslöjar filnamn och kod för besökarna. Där skrivs felen till en loggfil i stället.

Skriv ut variabler

Det snabbaste sättet att felsöka är att skriva ut det du undrar över.

Kommando Visar
echo Ett enkelt värde
print_r($array) Innehållet i en array, lätt att läsa
var_dump($variabel) Värdet och typen, även för null, false och tomma strängar

Lägg märke till att var_dump visar att åldern är en sträng, inte ett tal. Sådant ser du inte med echo.

På en webbsida blir utskriften lättare att läsa inom <pre>:

echo "<pre>";
var_dump($_POST);
echo "</pre>";

Felsök logiska fel

  • Använd === i stället för ==, så att typerna också jämförs.
  • Skriv ut villkoret: var_dump($alder >= 18); visar om det är sant eller falskt.
  • Lägg in spårutskrifter: echo "Kom hit"; visar vilken väg koden tar.
  • Kontrollera indata först: var_dump($_POST); visar vad formuläret faktiskt skickade.

Xdebug

Xdebug är ett tillägg som gör det möjligt att sätta brytpunkter i koden och stega igenom den rad för rad i VS Code. Vi återkommer till Xdebug när det finns stöd för PHP 8.5.

Övning (10 min)

Gör detta i din egen PHP-installation:

  1. Öppna php.ini och kontrollera error_reporting och display_errors.
  2. Tvinga fram ett felmeddelande av varje typ: Parse error, Warning och Fatal error.
  3. Testa print_r och var_dump på en array och på $_SERVER.

Klar när

  • Du vet var inställningarna för felvisning finns.
  • Du kan förklara skillnaden mellan print_r och var_dump.