Например.
<?php
// Any expression you want
define('IN_DEV', $_SERVER['REMOTE_ADDR'] === '127.0.0.1');
error_reporting(-1);
ini_set('display_errors', IN_DEV);
/**
* Error handler
*
* @param int $severity Errno
* @param string $msg Errstr
* @param string $file Errfile
* @param int $line Errline
* @throws ErrorException
*/
function errhandler($severity, $msg, $file, $line)
{
if (error_reporting() & $severity) {
throw new ErrorException($msg, 0, $severity, $file, $line);
}
}
/**
* Exception handler
*
* @param Exception $e
*/
function exceptionHandler($e)
{
if (IN_DEV) {
// show error for developer
echo $e->getMessage(), '<pre>', $e->getTraceAsString(), '</pre>';
} else {
// log error
// file, database, whatever
}
}
set_error_handler('errhandler', error_reporting());
set_exception_handler('exceptionHandler');