EverKB

Knowledge Base Ever

Nelze zachytit chybu na úrovni FATAL pomocí set_error_handler()

2019-11-19 01:52:19

Štítek: PHP, set_error_handler, Fatal Errors, register_shutdown_function, error_get_last,

Použití set_error_handler() v PHP k implementaci vlastních funkcí pro zpracování chyb je velmi užitečná technika. set_error_handler() Však nezachytí fatální chyby.

Jak je popsáno v dokumentaci PHP, následující chyby nemohou být vyřešeny uživatelem definovanými funkcemi.
E_ERROR
E_PARSE
E_CORE_ERROR
E_CORE_WARNING
E_COMPILE_ERROR
E_COMPILE_WARNING
E_STRICT
Ale použijte kombinaci register_shutdown_function() a error_get_last(), abyste zachytili závažnou chybu E_ERROR a nasměrovali ji na vlastní popisovač chyb. Níže uvedený kód ukazuje tuto techniku.
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);
}

Štítek

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