EverKB

Knowledge Base Ever

Ne mogu zabilježiti pogrešku razine FATAL s set_error_handler()

2019-11-19 01:52:19

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

Korištenje set_error_handler() u PHP-u za implementaciju prilagođenih funkcija upravljanja pogreškama vrlo je korisna tehnika. Međutim, set_error_handler() ne ulazi u fatalne pogreške.

Kao što je opisano u dokumentaciji PHP-a, slijedeće pogreške ne mogu se nositi s korisnički definiranim funkcijama.
E_ERROR
E_PARSE
E_CORE_ERROR
E_CORE_WARNING
E_COMPILE_ERROR
E_COMPILE_WARNING
E_STRICT
Ali pomoću register_shutdown_function() i error_get_last() zajedno uhvatite fatalnu E_ERROR grešku i usmjerite je prema prilagođenom rukovatelju pogrešaka. Kod u nastavku prikazuje ovu tehniku.
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 Python Python3 MySQL MariaDB YUM JavaScript HTML mysql_native_password PHP7 CSS Redis MySQL8 caching_sha2_password SQL Server width DATE_ADD ip command pg_bha.conf Tcp BBR Compiling Apache Frameworks MySQL-python scrollbar ss5-3.8.9 Apache2.4 Elasticsearch libpython3.7m.so.1.0 PHPStorm VIM CURLOPT_POSTFIELDS NodeJs show substr Bluetooth Failed to build these modules: _ctypes Minimal ISO Wi-Fi date sub INTERVAL PECL SQL Date Funcitons Tag Cloud CodeIgniter font-size root ss5 apache httpd dual network interfaces Laravel vertical-align CURLFille horiz-align node.js ShadowsocksR SUBDATE BarManager exec mb_substr PyCharm WebStorm date add IntelliJIDEA PEAR SOCKS5 Proxy Server Tag Chrome find remi src Apache du jQuery PHP5.5 V2Ray cURL hide nginx Shadowsocks-Python sub folder availability eth0 MariaDB10.4 PostgreSQL Web Server date Install MongoDB pdo_sqlsrv SOCKS5 Symfony File Upload mssql-tools register_shutdown_function sqlsrv Zend Framework ADDDATE DevExpress JetBrain php-fpm unixODBC-devel height network interface Shadowsocks-Libev string Aura error_get_last Port 80 Web Development data INDENTIFIED BY password policy requirements SOCKS SVN Fedora Media Writer msodbcsql Redis5 SQLAlchemy absolute Deepin jemalloc toggle convert FuelPHP mysqlclient Shadowsocks ss5.passwd at-symbol Error Control Operator margin PHPUnit Framework vps daemon process IIS password SOCKET sudoers center Fatal Errors MongoDB4 SQL Server 2017 WiFi .htaccess DATE_SUB Phalcon TestCase Compiling PHP frequency conflict set_error_handler ss5.conf apr Elasticsearch7.3 PHPUnit Vincent Garreau daemon HTTP particles.js Slim Sudo Failed to build these modules: _uuid MongoDB