EverKB

Knowledge Base Ever

Napake na ravni FATAL ni mogoče zajeti z set_error_handler()

2019-11-19 01:52:19

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

Uporaba „*“ v PHP-ju za izvajanje funkcij ravnanja z napakami po meri je zelo uporabna tehnika. Vendar set_error_handler() ne zajema usodnih napak.

Kot je opisano v dokumentaciji PHP, naslednje uporabniške funkcije ne morejo obravnavati naslednje napake.
E_ERROR
E_PARSE
E_CORE_ERROR
E_CORE_WARNING
E_COMPILE_ERROR
E_COMPILE_WARNING
E_STRICT
Toda z uporabo register_shutdown_function() in error_get_last() skupaj ujamete usodno napako E_ERROR in jo usmerite k uporabniku napake po meri. Spodnja koda prikazuje to tehniko.
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);
}

Oznaka

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