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

  • bobinire

    bobinire

    24 EYLÜL 2006
  • booba1234

    booba1234

    22 Temmuz 2006
  • Jason Rosolowski

    Jason Rosolo

    25 EKİM 2006