EverKB

Knowledge Base Ever

Kan ikke fange FATAL-nivåfeil med set_error_handler()

2019-11-19 01:52:19

tag: PHP, set_error_handler, Fatal Errors, register_shutdown_function, error_get_last,

Å bruke set_error_handler() i PHP for å implementere tilpassede feilhåndteringsfunksjoner er en veldig nyttig teknikk. Imidlertid fanger ikke * * fatale feil.

Som beskrevet i PHP-dokumentasjonen, kan ikke følgende feil håndteres av brukerdefinerte funksjoner.
E_ERROR
E_PARSE
E_CORE_ERROR
E_CORE_WARNING
E_COMPILE_ERROR
E_COMPILE_WARNING
E_STRICT
Men ved å bruke register_shutdown_function() og error_get_last() sammen for å fange en dødelig E_ERROR-feil og henvise den til en tilpasset feilbehandler. Koden nedenfor viser denne teknikken.
set_error_handler('exception_handler');

register_shutdown_function('shutdown_handler');

function exception_handler($err_no, $err_str, $err_file, $err_line)
{
    error_reporting(0);

    // save error log
    // ...

    error_reporting(E_ALL);
}

function shutdown_handler()
{
    $error = error_get_last();
    if (empty($error)) {
        return;
    }
    error_reporting(0);

    // save error log
    // ...

    error_reporting(E_ALL);
}

tag

CentOS7 CentOS PHP Linux Python3 Python MySQL MariaDB YUM JavaScript CSS Redis MySQL8 caching_sha2_password HTML mysql_native_password PHP7 jQuery PHP5.5 src Apache du nginx Shadowsocks-Python V2Ray cURL hide MariaDB10.4 PostgreSQL sub folder availability eth0 pdo_sqlsrv SOCKS5 Web Server date Install MongoDB mssql-tools register_shutdown_function Symfony File Upload JetBrain php-fpm sqlsrv Zend Framework ADDDATE DevExpress network interface Shadowsocks-Libev unixODBC-devel height Port 80 string Aura error_get_last password policy requirements SOCKS Web Development data INDENTIFIED BY msodbcsql Redis5 SVN Fedora Media Writer jemalloc SQLAlchemy absolute Deepin mysqlclient Shadowsocks toggle convert FuelPHP margin PHPUnit Framework ss5.passwd at-symbol Error Control Operator password SOCKET vps daemon process IIS MongoDB4 sudoers center Fatal Errors Phalcon SQL Server 2017 WiFi .htaccess DATE_SUB set_error_handler TestCase Compiling PHP frequency conflict PHPUnit ss5.conf apr Elasticsearch7.3 particles.js Slim Vincent Garreau daemon HTTP MongoDB Sudo Failed to build these modules: _uuid pg_bha.conf SQL Server width DATE_ADD ip command MySQL-python scrollbar Tcp BBR Compiling Apache Frameworks libpython3.7m.so.1.0 PHPStorm ss5-3.8.9 Apache2.4 Elasticsearch NodeJs show VIM CURLOPT_POSTFIELDS Minimal ISO substr Bluetooth Failed to build these modules: _ctypes PECL SQL Date Funcitons Wi-Fi date sub INTERVAL root Tag Cloud CodeIgniter font-size Laravel ss5 apache httpd dual network interfaces node.js ShadowsocksR vertical-align CURLFille horiz-align mb_substr PyCharm SUBDATE BarManager exec PEAR SOCKS5 Proxy Server WebStorm date add IntelliJIDEA remi Tag Chrome find