formulario - En CodeIgniter, ¿cómo puedo enviar mensajes de error de PHP por correo electrónico?
formulario de contacto codeigniter (5)
Me gustaría recibir registros de errores por correo electrónico. Por ejemplo, si se produce un mensaje de error del Warning-level
, me gustaría recibir un correo electrónico al respecto.
¿Cómo puedo hacer que funcione en CodeIgniter?
Ah, otra opción es obtener una aplicación de rotación de registros que admita resúmenes de correo electrónico. No estoy seguro de la plataforma en la que se encuentra, pero podría hacer que algo supervise el archivo error_log y le envíe actualizaciones, puede que no sea tan ordenado y ciertamente estaría limitado a solo la información en error_log. (error_log es Apache, CI tiene una carpeta / logs / en el sistema e IIS tiene los eventos de Windows)
Una cosa que queda fuera de la solución es que tienes que coger el súper objeto CodeIgniters para cargar y usar la biblioteca de correo electrónico (o cualquiera de las otras librerías CodeIgniters y funciones nativas).
$CI =& get_instance();
Después de hacerlo, usa $CI
lugar de $this
para cargar la biblioteca de correo electrónico y establecer todos los parámetros. Para obtener más información, haga clic aquí y busque en Utilizing CodeIgniter Resources en la sección de su biblioteca .
Estoy a punto de lanzar un proyecto de código abierto que hace esto, y más. Recopila errores, los envía a un rastreador de problemas, detecta duplicados, los convierte en problemas y envía correos electrónicos al personal.
Los detalles están en https://sourceforge.net/news/?group_id=317819&id=293422 y la versión 0.1.7 que menciona saldrá en un par de días.
El rastreador de código abierto está en http://elastik.sourceforge.net/
Cualquier comentario de bienvenida, gracias
Podría extender la clase principal de Excepción para hacerlo.
Puede que tenga que ajustar la referencia a la clase de correo electrónico de CI, no estoy seguro si puede crear una instancia de una biblioteca como esta. No uso la clase de correo electrónico de CI, he estado usando la biblioteca de Swift Mailer. Pero esto debería llevarte por el camino correcto.
Cree un archivo MY_Exceptions.php y colóquelo en / application / libraries / (O en / application / core / para CI 2)
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(''[email protected]'', ''Your Name'');
$ci->email->to(''[email protected]'');
$ci->email->cc(''[email protected]'');
$ci->email->bcc(''[email protected]'');
$ci->email->subject(''error'');
$ci->email->message(''Severity: ''.$severity.'' --> ''.$message. '' ''.$filepath.'' ''.$line);
$ci->email->send();
}
parent::log_exception($severity, $message, $filepath, $line);
}
}
Configuré un proyecto github de código abierto para implementar esta solución con parámetros configurables de correo electrónico.