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

  • Darren Kitchen

    Darren Kitch

    3 EKİM 2011
  • Greater Than Gatsby Photoshop Actions & Lightroom Presets

    Greater Than

    11 ŞUBAT 2013
  • xSammyJoe1

    xSammyJoe1

    19 Temmuz 2011