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

  • Exalto_Gamer

    Exalto_Gamer

    15 EKİM 2014
  • ipsy Makeup Tips

    ipsy Makeup

    19 ŞUBAT 2009
  • Perihelion

    Perihelion

    23 NİSAN 2008