捕获错误后,PHP / Apache继续执行

时间:2019-05-03 22:53:15

标签: php .htaccess exception error-handling

大家好,我有这个处理程序错误:

.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()这样的错误,则此操作正确并停止执行...

enter image description here

但是,如果我在“ Aplication”逻辑的末尾加上“ Error”,则错误处理程序将无法清除先前的输出(HTML代码和回显)。

enter image description here

0 个答案:

没有答案