catch-fatal-error
test.php
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?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));
}
}
?>
// 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