PHP5 ölümcül / ayrıştırma hataları günlüğe

2 Cevap php

Benim sunucuda çalışan web sitelerine entegre edilecek bir hata günlüğü hizmeti yazıyorum, o vb bana hata gruplar, e-posta göndereceğiz

Yani ancak (çıkış tampon, kapatma fonksiyonu) PHP kodu işlemek için hileler kullanarak değil, ölümcül işlemek ve hataları ayrıştırmak için bir yol olup olmadığını bulmaya çalışıyorum. Ben bazı C kodu veya benim PHP kodu dışında işlemek için bir şeyler yazmak oldukça mutluyum. (Gönderilen herhangi başlıklar olmamalıdır yüzden benim siteler çıktı tamponlama kullanıyorsanız) Ben de mümkünse bir yönlendirme sorunu istiyorum.

Bu bir PHP modül ile yapılabilir eminim, ama ben bir yazılı ve nereden başlayacağınızı hiçbir fikrim yok hiç.

2 Cevap

PHP bir ölümcül veya ayrıştırma hatası catch için hiçbir yolu yoktur. Ama ..

5.2, onlar error_get_last() eklendi. Bir kapatma işlev içinde aramak ve günlük gerçekleştirebilirsiniz. Ölümcül bir hata olduğu bir mail kapalı bir atış denenmemiş 5.3 örnek:

<?php
register_shutdown_function(function(){
    $err = error_get_last();
    if(is_array($err) && array_key_exists('type', $err) $err['type'] > 0 
      && ($err['type'] == E_ERROR || $err['type'] == E_PARSE) {
        error_log("Oh noes, a fatal: " . var_export($err, true), 1, 'fatals@example.com');
    }
});

(Eğer 5.3 üzerinde değildir ve anonim işlevleri yapamaz eğer bir geri kullanmanız gerekir.)

Bu bir kapatma işlevi ele alınır çünkü ne yazık ki, büyük ihtimalle başlıklar zaten yayılan edilmiş ve kullanıcıya yararlı bir şey sağlamak mümkün olmayabilir vardır. Ancak, bu uygulamanın geri kalanı bağlıdır, bu yüzden sizin için çalışmak olabilir. Deneyin ve öğrenin!

Varsayılan olarak Tüm hatalar web sunucu hata günlüğüne geçirilir ancak kendi dosyasının yolunu belirterek php.ini bunu değiştirebilirsiniz via error_log setting. Peki ne yapmak için sol ne olursa olsun / her gün log dosyası kesilemiyor / veri göndermek / ayrıştırmak ve cron iş olarak çalıştırmak için biraz ayrı script / app yazmaktır.