E-posta veya nasıl günlük PHP uyarıları göndermek?

4 Cevap php

Benim bazı arkadaşlarım tarafından testler üzerinde PHP kullanarak bir web uygulaması geliştiriyorum. Bana ne elde uyarıları bilmek için ancak bunları kullanarak görüntülemeden Ne yaklaşımı kullanmak için tavsiye edersiniz ini_set('display_errors', 1);?

Ayrıca, uygulama ben uzaktan erişimi yok olacak olan bir intranet çalışacaktır.

Bana bazı bilgiler ile günlük e-postalar göndermek için düşünüyordum, ama kaydedilecek önemli gerçekler bilmiyorum. Benim için bir makale / örnek var mı? Benim için iyi bir tavsiye var mı?

4 Cevap

  • Sen onları görüntülemeden hataları giriş yapabilirsiniz.

Örneğin gibi bir şey yapabilirsiniz:

error_reporting(E_ALL | E_STRICT); //For PHP 6 E_STRICT become part of E_ALL
ini_set('display_errors', 'Off');
ini_set('log_errors', 'On');
ini_set('error_log', $_SERVER['DOCUMENT_ROOT'] . '/php.log');

Ayrıca php.ini düzenleyebilir veya bir. Htaccess (Apache üzerinde ise) ile yapabilirsiniz.

  • Uzaktan bu günlüğü erişemiyorsanız Eğer e-posta yoluyla size günlük gönderir ki küçük bir PHP uygulama yapabilirsiniz.

PHP mail() kullanabilirsiniz, ancak böyle bir kütüphane PHPMailer şeyleri hızlandırmak olacaktır (ve kullanımı daha kolay olacaktır).

  • Bir CRON job (eşdeğer ya da bir şey) e-posta her gün (veya hafta veya başka) yangın var.

Bir hata işleyicisi yazmak ve set_error_handler yerine varsayılan birinin denir emin olmak için kullanın. Bu işleyicisi, size amaç için iyi olduğunu düşünüyorum ne yapabilirim.

Bir günlük e-posta yapmak istiyorsanız, bir veritabanı veya dosya için verileri kaydetmek ve son veriler ile e-posta göndermek için günde bir kez cronjob çalışma yapmak istiyorum. Herhalde sadece ben daha sonra ilgili bazı arayüzü üzerinden görebilirsiniz bir veritabanındaki bir günlük tablosu, kaydetmek için tercih ediyorum.

Gerçi her şeyi yakalamak için gitmiyor - tüm e_warning yakalanmış olacak, ama hepsi değil, diğer türleri olacaktır. Örneğin, hataları bu şekilde yakalanmış olamaz ayrıştırmak, ve siz de istisnalar işlemek isteyebilirsiniz, size set_exception_handler kullanmalısınız.

Ben sadece bir olasılık olduğunu düşünüyorum.

Orada bağlantı olabilir Eğer apache günlüğünü görebiliyordu.

Ama aksi takdirde. Özür dilerim.

Benim en iyi tavsiye PHP'nin set_error_handler fonksiyonu üzerinde okumaktır. Bunu e-posta olsun, bunu log, ya da yapmak istediğiniz ne olursa olsun - bu bazı hata meydana geldiğinde ne olur tam olarak belirlemek sağlar.

Now, there are numerous great articles on logging errors in PHP instead of displaying them to the end user. Some random examples, which I found with a 30 second Google search: http://davidwalsh.name/custom-error-handling-php http://www.electrictoolbox.com/log-php-errors-log-errors-error-log/ http://www.w3schools.com/php/php_error.asp

PHP hataları işlemek için birçok yol vardır. Anılan yanı sıra, (varsayılan, PHP kullanmak en Apache hata günlükleri, yani / var / log / httpd / hatalar.log tarafından) varsayılan PHP hata günlüklerine güveniyor olabilir. Ancak istediğiniz herhangi bir dosyaya göndermek için php.ini değiştirebilirsiniz. Sen hataları meydana görmek için her gün bu dosyayı kontrol edebilirsiniz.

Kurulum Ayrıca daha sonra günde bir kez bu dosyayı okumak ve size e-posta için bir crontab komut dosyası, dışarı açık olabilir.

Yine, daha esnek bir seçenek olarak set_error_handler öneririm.