EverKB

Knowledge Base Ever

set_error_handler() İle FATAL seviye hatası yakalanamıyor

2019-11-19 01:52:19

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

Özel hata işleme fonksiyonlarını uygulamak için PHP'de set_error_handler() kullanımı çok kullanışlı bir tekniktir. Ancak, set_error_handler() ölümcül hataları yakalamaz.

PHP belgelerinde açıklandığı gibi, aşağıdaki hatalar kullanıcı tanımlı işlevler tarafından ele alınamaz.
E_ERROR
E_PARSE
E_CORE_ERROR
E_CORE_WARNING
E_COMPILE_ERROR
E_COMPILE_WARNING
E_STRICT
Ancak, ölümcül bir E_ERROR hatasını yakalamak ve onu özel bir hata işleyicisine yönlendirmek için register_shutdown_function() ve error_get_last() tuşlarını kullanarak. Aşağıdaki kod bu tekniği göstermektedir.
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);
}

etiket

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

En son makale