Beste PHPers,
Wat is de beste manier om met foutmeldingen om te gaan? De constructie "... or die("melding")" is een beetje knullig, daar zijn we het wel over eens. De bezoeker krijgt dan een pagina die ineens halverwege is afgebroken met een melding.
Maar wat doe je met de echte (PDO, mysql) meldingen? Je kunt ze naar het scherm sturen want dat is erg handig voor het debuggen. Maar bij een productie versie wil je dat niet, want die meldingen vertellen een hacker erg veel over de gebruikte webserver, de database, de tabellen ...
Dus eigenlijk wil je bij de productie versie dat er op het scherm alleen een neutrale melding komt ("programmafout, waarschuw webmaster") en naar de logfile alle details (welke regel in welk script, welke query enz.).
In de PHP.ini zijn daarvoor "display_errors" en "log_errors". Die horen op een testserver te staan op On en Off, en op een productie server op Off en On. (Je kunt ze ook met [php]ini_set()[/php] instellen.) Dat werkt prima voor de standaard foutmeldingen, maar wat als je die foutmeldingen zelf ter hand neemt, bijvoorbeeld met PDO en try - catch blocks om zelf exceptions af te handelen? Als je de details van de melding met [php]echo[/php] doet, komen ze zeker op het scherm.
Eigenlijk moet je dus een errorlog() functie hebben die afhankelijk van de instellingen "display_errors" en "log_errors" de melding naar het scherm en/of de server logfile stuurt. Er is een functie [php]error_log()[/php] maar daarbij moet je toch nog zelf aangeven waar de melding heen moet.
Wat is de standaard manier om dit aan te pakken? Moet ik hiervoor een eigen errorlog() functie maken? Of is er een betere manier?
Groet,
Ivo
1.633 views