PHP hata sarıcı?

2 Cevap

Ben kullanıyorum terim doğru olup olmadığını bilmek, ama ne arıyorum Zend sunucu ile ne elde etmek için benzer bir şey olduğunu bilmiyorum. this bir göz atın.

Bu bir hata gibi, bir yığın izleme ve fonksiyon parametreleri yanı sıra bazı diğer bilgiler ile birlikte isteği döker görünüyor. Bu güzel bir arayüz içinde görüntülemenizi sağlar. Ben bu her zaman hata geri çağrıları yapmak gibi kendim yapmak zor olmaz biliyorum, ama böyle bir şey varsa (ücretsiz) yerine tekerleği yeniden icat kullanmayı tercih ediyorum.

2 Cevap

Ben otomatik olarak sizin için yapacak hiçbir araç yok yok; ama :-( bu size biraz zaman alacaktır, itiraf, I Still ... düşünmek, geliştirmek zor değil

Sadece bir kaç not atmak, hataları oturum aklıma gelen en iyi çözümdür:


Using the example that's given on the manual page, something like this would probably do : first, declare your error handling function :

function myErrorHandler($errno, $errstr, $errfile, $errline)
{
    $str = '';
    switch ($errno) {
        case E_USER_ERROR:
            $str .= "<b>My ERROR</b> [$errno] $errstr<br />\n";
            $str .= "  Fatal error on line $errline in file $errfile";
            $str .= ", PHP " . PHP_VERSION . " (" . PHP_OS . ")<br />\n";
            break;
        case E_USER_WARNING:
            $str .= "<b>My WARNING</b> [$errno] $errstr<br />\n";
            break;
        case E_USER_NOTICE:
            $str .= "<b>My NOTICE</b> [$errno] $errstr<br />\n";
            break;
        default:
            $str .= "Unknown error type: [$errno] $errstr<br />\n";
            break;
    }
    $str .= print_r($_GET, true);

    $str .= "\n";
    file_put_contents(dirname(__FILE__) . '/log.txt', $str, FILE_APPEND);

    /* Don't execute PHP internal error handler */
    return true;
}

It gets informations of the error, prepares some specific error messages that depend on the error type, and put all that and a dump of $_GET to a file.
(Of course, your webserver must be able to create / write to that file)


Then, you register that handler :

$old_error_handler = set_error_handler("myErrorHandler");


And, finally, just to test, you trigger some errors :

trigger_error("test of E_USER_ERROR", E_USER_ERROR);
trigger_error("test of E_USER_WARNING", E_USER_WARNING);
trigger_error("test of E_USER_NOTICE", E_USER_NOTICE);


Now, provided you call the page with something like this : http://tests/temp/temp.php?a=10&test=glop&hello=world ; you will get an error log containing this :

$ cat log.txt
<b>My ERROR</b> [256] test of E_USER_ERROR<br />
  Fatal error on line 34 in file /home/squale/developpement/tests/temp/temp.php, PHP 5.3.0RC4 (Linux)<br />
Array
(
    [a] => 10
    [test] => glop
    [hello] => world
)

<b>My WARNING</b> [512] test of E_USER_WARNING<br />
Array
(
    [a] => 10
    [test] => glop
    [hello] => world
)

<b>My NOTICE</b> [1024] test of E_USER_NOTICE<br />
Array
(
    [a] => 10
    [test] => glop
    [hello] => world
)

Bu durumda, oldukça çirkin bir karmaşa ... Ama muhtemelen noktayı görmek; şimdi, ne istediğinizi tam olarak almak için bu üzerine inşa etmek kadar ;-)


Of course, now, you also have to develop the reporting interface (user-friendly, fast, usable, and all that...) ; this will probably be the longest part to put in place :-(

And, unfortunatly, I do not know any tool that could help you...
(Maybe, if you start developping something, it could be released as open source ? That would probably prove useful to others ;-) I might be interested for some projects, and I am sure I'm not the one ;-) )

Yine, eğlenin!

Ben PHP hata günlükleri ayrıştırmak ve görüntülemek için herhangi bir ücretsiz araçlar bilmiyorum.

I set_error_handler() ve set_exception_handler() kullanarak çeşitli projeler için günlük işlevlerini yazdım.

Benim işleyici sınıfları temelde bir _GET ve print_r (), 'POST, _SERVER, _COOKIE, _SESSION, vb ve e-posta yapmak / SMS me. Ince çoğu zaman çalışır. Ve ben hızlı hata bildirimlerini almak gibi. (Bu yüzden hızlı bir şekilde çözebilirsiniz).

PHP için topluluk araçları bir boşluk sermiştir. Birisi günlükleri görüntüleme / ayrıştırma için güzel bir UI hataları oturum açmak için bir proje başlatmak gerekiyor. Hmm ...