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

  • DrakeVEVO

    DrakeVEVO

    17 AĞUSTOS 2009
  • SalGames2016

    SalGames2016

    17 Kasım 2012
  • VvCompHelpvV

    VvCompHelpvV

    4 EYLÜL 2007