Scripts

Catch fatal error

Vangt fatale foutmeldingen op om vervolgens een gebruiksvriendelijke foutmelding weer te geven. Let op : een die; of exit; zorgt ook voor een catch! Let op : een fatal error in test.php zelf kan niet opgevangen worden!

catch-fatal-error
test.php

<?php

// onherstelbare fouten opvangen
global $websitePrinted;
// de functie shutDown wordt uigevoerd wanner php stopt met parsen
register_shutdown_function('shutDown');
// de website is nog niet geprint
$websitePrinted = false;

// buffer start
ob_start();

// pagina includen welke een fatale error veroorzaakt
include('fatalError.php');

// buffer legen
ob_end_flush();

// website is bij deze geprint
$websitePrinted = true;

/**
 * Deze functie wordt aangeroepen zodra php stopt met parsen.
 * Na het printen van de pagina wordt de globale variabele
 * $websitePrinted op true gezet. Mocht deze false zijn
 * dan is er een fatal error opgetreden
 */
function shutDown() {
	// variabele $websitePrinted globaal maken
	global $websitePrinted;
	// indien de website niet geprint is, en dus een fatal error heeft veroorzaakt
	if (!$websitePrinted) {
		// buffer legen om de foutmelding te onderdrukken
		@ob_clean();
		// gebruiker op de hoogte brengen van het foutje
		print 'sorry bezoeker, er is iets ernstig mis gegaan';
		// laatste foutmelding ophalen
		$error = error_get_last();
		// mailtje sturen zodat je het op kan gaan lossen
		mail('[email protected]', 'fatal error ontstaan', 'laatste foutmelding : '.print_r($error, true));
	}
}

?>

fatalError.php

<?php

ljsdh y8s 34; 6lowu84 y5 'W 0VE= RT ;

?>

Reacties

0
Nog geen reacties.