git.shiar.nl
/
minimedit.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (from parent 1:
96baae3
)
page: catch triggered php errors
author
Mischa POSLAWSKY
<perl@shiar.org>
Sat, 16 Sep 2017 15:11:03 +0000
(17:11 +0200)
committer
Mischa POSLAWSKY
<perl@shiar.org>
Mon, 18 Sep 2017 18:21:28 +0000
(20:21 +0200)
page.php
patch
|
blob
|
history
diff --git
a/page.php
b/page.php
index 1c029a99b9d352969f79dfff4561c4912c18e5e8..dc7f0128a609ef0b0178b9318faff1e62d7f693f 100644
(file)
--- a/
page.php
+++ b/
page.php
@@
-14,6
+14,8
@@
function getoutput($blocks = [])
return str_replace(array_keys($rep), array_values($rep), ob_get_clean());
}
return str_replace(array_keys($rep), array_values($rep), ob_get_clean());
}
+# custom error handling
+
function fail($error)
{
http_response_code(500);
function fail($error)
{
http_response_code(500);
@@
-22,17
+24,30
@@
function fail($error)
require_once './500.html';
print getoutput(['debug' => $error]);
}
require_once './500.html';
print getoutput(['debug' => $error]);
}
+
set_exception_handler('fail');
define('E_FATAL', E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR);
set_exception_handler('fail');
define('E_FATAL', E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR);
+
+set_error_handler(function ($level, $error, $file, $line) {
+ if ($level & E_FATAL) {
+ fail($error);
+ return;
+ }
+ return FALSE;
+});
+
register_shutdown_function(function () {
# display failure page for fatal exceptions
$error = error_get_last();
if (!($error['type'] & E_FATAL)) return;
fail("Fatal: $error[message] in $error[file]:$error[line]");
});
register_shutdown_function(function () {
# display failure page for fatal exceptions
$error = error_get_last();
if (!($error['type'] & E_FATAL)) return;
fail("Fatal: $error[message] in $error[file]:$error[line]");
});
+
error_reporting(error_reporting() & ~E_FATAL);
error_reporting(error_reporting() & ~E_FATAL);
+# user login and control
+
include_once 'auth.inc.php';
$Edit = isset($_GET['edit']);
include_once 'auth.inc.php';
$Edit = isset($_GET['edit']);