【问题标题】:In CodeIgniter, How Can I Have PHP Error Messages Emailed to Me?在 CodeIgniter 中,如何通过电子邮件将 PHP 错误消息发送给我?
【发布时间】:2008-11-04 02:07:50
【问题描述】:

我想通过电子邮件接收错误日志。例如,如果出现Warning-level 错误消息,我想收到一封关于它的电子邮件。

我怎样才能让它在 CodeIgniter 中工作?

【问题讨论】:

    标签: php email codeigniter error-logging


    【解决方案1】:

    您可以扩展 Exception 核心类来做到这一点。

    可能需要调整对 CI 电子邮件类的引用,不确定是否可以从这样的库中实例化它。我自己不使用 CI 的电子邮件类,我一直在使用 Swift Mailer 库。但这应该会让你走上正确的道路。

    创建一个文件 MY_Exceptions.php 并将其放在 /application/libraries/ 中(或 CI 2 中的 /application/core/ 中)

    class MY_Exceptions extends CI_Exceptions {
    
        function __construct()
        {
            parent::__construct();
        }
    
        function log_exception($severity, $message, $filepath, $line)
    
        {   
            if (ENVIRONMENT === 'production') {
                $ci =& get_instance();
    
                $ci->load->library('email');
                $ci->email->from('your@example.com', 'Your Name');
                $ci->email->to('someone@example.com');
                $ci->email->cc('another@another-example.com');
                $ci->email->bcc('them@their-example.com');
                $ci->email->subject('error');
                $ci->email->message('Severity: '.$severity.'  --> '.$message. ' '.$filepath.' '.$line);
                $ci->email->send();
            }
    
    
            parent::log_exception($severity, $message, $filepath, $line);
        }
    
    }
    

    【讨论】:

    • 对上面的更正,需要复数的Exceptions。 MY_Exceptions.php 类 MY_Exceptions 扩展 CI_Exceptions { function My_Exceptions() { parent::CI_Exceptions(); } ...(使用 CI 版本 1.7.1)
    • 我尝试了同样的方法,但没有发送电子邮件...我通过将$data["query_root_menu"] = $t 更改为$dataA["query_root_menu"] = $t 来测试它也请帮助我,这对我来说非常有必要学习
    【解决方案2】:

    解决方案中遗漏的一件事是,您必须获取 CodeIgniters 超级对象才能加载和使用电子邮件库(或任何 CodeIgniters 其他库和本机函数)。

    $CI =& get_instance();
    

    完成后,您使用$CI 而不是$this 来加载电子邮件库并设置所有参数。如需更多信息click here,请查看在您的库中使用 CodeIgniter 资源部分。

    【讨论】:

      【解决方案3】:

      哦,另一种选择是获取支持电子邮件摘要的 logrotation 应用程序。不确定你在哪个平台上,但你可以让一些东西监视 error_log 文件并向你发送更新,可能不那么整洁,当然你会仅限于 error_log 中的信息。 (error_log 是 Apache,CI 在系统中有 /logs/ 文件夹,IIS 有 Windows 事件)

      【讨论】:

        【解决方案4】:

        我正要发布一个开源项目来实现这一点,以及更多。它收集错误,将它们发送到问题跟踪器,检测重复项,将它们转化为问题并通过电子邮件发送给员工。

        详情请见https://sourceforge.net/news/?group_id=317819&id=293422,其中提到的 0.1.7 版本将在几天后发布。

        开源跟踪器位于http://elastik.sourceforge.net/

        欢迎任何反馈,谢谢

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-08-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-04-24
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多