Control y reporte de errores en PHP

Me ha costado pero por fin tengo un pequeño script para controlar errores que se producen en PHP y además te los notifica (aquí en email).

También controla errores producidos en MySql😉

Todo esto estará en la nueva versión 0.9 de Open Classifieds.

A ver que os parece:

<?php

// error handler function
function ocErrorHandler($errno, $errstr, $errfile, $errline)
{
switch ($errno) {
case E_USER_ERROR:
if ($errstr == “(SQL)”){
// handling an sql error
$error_body= “<b>SQL Error</b> [$errno] ” . SQLMESSAGE . “<br />n
Query : ” . SQLQUERY . “<br />n
On line ” . SQLERRORLINE . ” in file ” . SQLERRORFILE . ”
, PHP ” . PHP_VERSION . ” (” . PHP_OS . “)<br />n
Aborting…<br />n”;
} else {
$error_body= “<b>ERROR CRITICAL</b> [$errno] $errstr<br />n
Fatal error on line $errline in file $errfile
, PHP ” . PHP_VERSION . ” (” . PHP_OS . “)<br />n
Aborting…<br />n”;
}

if (ENVIRONMENT==”dev”) echo $error_body;
elseif (ENVIRONMENT==”prod”){//send email
mail(NOTIFY_EMAIL,”ERROR $errno “.SITE_NAME, $error_body,’From: Error Handler’);
}

exit(1);
break;

case E_USER_WARNING:
if (ENVIRONMENT==”dev”) echo “<b>ERROR WARNING</b> [$errno] $errstr<br />n”;
break;

case E_USER_NOTICE:
if (ENVIRONMENT==”dev”) echo “<b>NOTICE</b> [$errno] $errstr<br />n”;
break;

default:
//if (ENVIRONMENT==”dev”) echo “Unknown error type: [$errno] $errstr<br />n”;
break;
}

return true;
}

function ocSqlError($ERROR, $QUERY, $PHPFILE, $LINE){
define(“SQLQUERY”, $QUERY);
define(“SQLMESSAGE”, $ERROR);
define(“SQLERRORLINE”, $LINE);
define(“SQLERRORFILE”, $PHPFILE);
trigger_error(“(SQL)”, E_USER_ERROR);
}

set_error_handler(‘ocErrorHandler’);

$return_val=@ mysql_query($query) or ocSqlError(“(“.mysql_errno().”) “.mysql_error(), $query, $_SERVER[‘PHP_SELF’], __LINE__);

?>

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s