大家好,我有这个处理程序错误:
.htaccess:
# Control de Errores
php_value auto_prepend_file "./server/conferror.php"
# Disable directory browsing
Options -Indexes
# Hide the contents of directories
IndexIgnore *
# Hide files of type .png, .zip, .jpg, .gif and .doc from listing
IndexIgnore *.png *.zip *.jpg *.gif *.doc *.pdf *.txt *.jpeg
# Allow access to php files
<Files *.php>
allow from all
</Files>
conferror.php:
<?php
declare (strict_types = 1);
ini_set('session.gc_maxlifetime', '0');
ini_set('session.use_only_cookies', '1');
ini_set('session.cookie_httponly', '1');
ini_set('allow_url_fopen', '1');
ini_set('allow_url_include', '1');
ini_set('error_reporting', '1');
ini_set('display_errors', '0');
error_reporting(E_ALL);
register_shutdown_function("ShutdownHandler");
set_exception_handler("ExeptionHandler");
set_error_handler("ErrorHandler");
function ShutdownHandler() {
$CheckError = error_get_last();
if ($CheckError != null) {
ob_clean();
$File = $CheckError['file'];
$Line = $CheckError['line'];
$Desc = $CheckError['message'];
echo 'ShutdownHandler:<br><b>Archivo:</b> ' . $File . '<br><b>Línea :</b> ' . $Line . '<br><b>Descripción:</b><br>' . $Desc . '<br>';
exit();
}
}
function ErrorHandler($error_level, $error_message, $error_file, $error_line, $error_context) {
ob_clean();
$File = $error_file;
$Line = $error_line;
$Desc = $error_message;
echo 'ErrorHandler:<br><b>Archivo:</b> ' . $File . '<br><b>Línea :</b> ' . $Line . '<br><b>Descripción:</b><br>' . $Desc . '<br>';
exit();
}
function ExeptionHandler($e) {
ob_clean();
$File = $e->getFile();
$Line = $e->getLine();
$Desc = $e->getMessage();
echo 'ExeptionHandler:<br><b>Archivo:</b> ' . $File . '<br><b>Línea :</b> ' . $Line . '<br><b>Descripción:</b><br>' . $Desc . '<br>';
exit();
}
如果我在应用逻辑开始时输入foo()
这样的错误,则此操作正确并停止执行...
但是,如果我在“ Aplication”逻辑的末尾加上“ Error”,则错误处理程序将无法清除先前的输出(HTML代码和回显)。