SORU
10 Kasım 2008, PAZARTESİ


Nasıl PHP Ölümcül Hata yakalamak mı

set_error_handler() en PHP hataları yakalamak için kullanabilirim, ama (E\_ERROR) ölümcül hatalar, var olmayan bir işlevi çağırmak gibi işe yaramıyor. Bu hataları yakalamak için başka bir yol var mı?

Tüm hatalar için mail() aramak için çalışıyorum ve PHP 5.2.3 çalıştırıyorum.

CEVAP
27 Ocak 2010, ÇARŞAMBA


Günlük ölümcül hataları PHP 5.2 gerektirir register_shutdown_function kullanma :

register_shutdown_function( "fatal_handler" );

function fatal_handler() {
  $errfile = "unknown file";
  $errstr  = "shutdown";
  $errno   = E_CORE_ERROR;
  $errline = 0;

  $error = error_get_last();

  if( $error !== NULL) {
    $errno   = $error["type"];
    $errfile = $error["file"];
    $errline = $error["line"];
    $errstr  = $error["message"];

    error_mail(format_error( $errno, $errstr, $errfile, $errline));
  }
}

error_mail format_error fonksiyonları tanımlamak gerekir. Örneğin:

function format_error( $errno, $errstr, $errfile, $errline ) {
  $trace = print_r( debug_backtrace( false ), true );

  $content = "
  <table>
  <thead><th>Item</th><th>Description</th></thead>
  <tbody>
  <tr>
    <th>Error</th>
    <td><pre>$errstr</pre></td>
  </tr>
  <tr>
    <th>Errno</th>
    <td><pre>$errno</pre></td>
  </tr>
  <tr>
    <th>File</th>
    <td>$errfile</td>
  </tr>
  <tr>
    <th>Line</th>
    <td>$errline</td>
  </tr>
  <tr>
    <th>Trace</th>
    <td><pre>$trace</pre></td>
  </tr>
  </tbody>
  </table>";

  return $content;
}

Swift Mailer error_mail işlevi yazmak için kullanın.

Ayrıca Bkz:

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • eurotuner

    eurotuner

    6 Mart 2006
  • Muse

    Muse

    28 EYLÜL 2006
  • Techmoan

    Techmoan

    31 Mayıs 2009