Kunskapsdokument - CSource

Inom all applikationsutveckling lär vi av varandra, på en högskolekurs jag gick så fick vi använda en smidig applikation som heter CSource. CSource är en php-applikation dom du enkelt kan lägga i din egen applikation som visar upp php-koden utan att den körs. På det sättet kan vem som helst, som har länken, kolla på din php-kod och hjälpa dig att felsöka om det behövs. Det är också genom denna applikation jag kommer bedöma din kod.

En guide för att använda CSource hittar du här, enklaste sättet är att följa guiden för Den snabba vägen med source.php. Hela repositoryt finner du här.

Det finns vissa saker du behöver fundera på var du vill lägga din CSource.

  • Om du lägger din i rooten på din domän, http://www.dindoman.se/source.php så kommer alla som använder applikationen att kunna läsa alla dina filer i samtliga undermappar som finns på din domän. Därför kan det vara smidigt att skapa en mapp som heter /moment/ eller något liknande och sedan lägga source.php där, då kan vi bara se filerna i den mappen och alla underliggande mappar.
  • När vi jobbar med användarnamn och lösenord är det viktigt att dessa inte skrivs hur som helst. För att CSource skall maska dem, och ersätta med texten Intentionally removed by CSource, behöver du lagra användarnamn i en variabel med något av följande namn, password|passwd|pwd|pw|user|username. Dubbelchecka alltid att alla dina viktiga uppgifter inte visas för användaren.
  • Fundera på hur du vill använda länken till din CSource-fil, jag lägger den öppet i de applikationer där jag vill att alla skall ha lätt att komma åt den. Ibland döper jag om filen till någonting som bara jag känner till så att det är enkelt att leta efter specifik kod på specifik sida via nätet. Den länken finns ingenstans. Själva source.php-filen kan du döpa till vad som helst, den är helt självständig.

Filmad genomgång

Här hittar du en filmad genomgång om hur jag vill att vi skall använda CSorce och även hur den miniapplikationen fungerar.

Varför CSource visar felmeddelanden – och hur vi döljer dem tillfälligt

Vad händer?
CSource är skriven för äldre PHP-versioner. I PHP 8.2+ flaggas vissa konstruktioner (t.ex. “dynamiska egenskaper”) som deprecated – alltså “tillåtet nu, men försvinner framöver”. Därför kan ni se många varningar när ni visar filer via CSource.

Varför ser jag dem lokalt men inte på servern?
localhost är PHP ofta inställt att visa alla fel i webbläsaren. På Oderlands server är visningen av fel avstängd, så varningarna syns inte där – men det betyder inte att de är lösta. De finns fortfarande, de bara visas inte i webbläsaren.

Tillfällig lösning: visa inte fel i webbläsaren (utan att ändra servern)
Lägg in detta allra högst upp i den sida som kör CSource (innan någon HTML skrivs ut):

Välj vilka error som skall skriva ut i webbläsaren

<?php
// Visa inte fel i browsern (0=dölj, 1=visa)
ini_set('display_errors', '0');

// Logga fel till serverns logg (0=dölj, 1=visa)
ini_set('log_errors', '1');

// Ta med allt utom deprecations (framtidsvarningar)
error_reporting(E_ALL & ~E_DEPRECATED & ~E_USER_DEPRECATED);
  • display_errors=0 gör att fel inte skrivs ut för besökaren.
  • log_errors=1 gör att de loggas i serverns fel-logg i stället.
  • error_reporting(...) behåller alla “skarpa” fel och varningar, men filtrerar bort just deprecated-notiserna.

Viktigt: Detta löser inte grundproblemet, det bara döljer varningarna i webbläsaren så att ni kan jobba vidare. Vi uppdaterar koden/verktyget så den blir framtidssäker, men under tiden är detta ett säkert sätt att undvika brus.