Pastebin

New pastes are no longer accepted · Stats

Latest Pastes

PHP XML error handler

function fatal($message, $code = 400)
{
	$document = new SimpleXMLElement('<?xml version="1.0" encoding="utf-8"?><error />');
	$document->type = 'Error';
	$document->message = $message;
	
	header('Content-type: text/xml; charset=' . Config::charset(), true, $code);
	echo $document->asXML();
	ob_start();
	error_reporting(0);
	exit(1);
}

function error_handler($level, $errstr, $file, $line)
{
	if (error_reporting() & $level != $level)
		return;

	$document = new SimpleXMLElement('<?xml version="1.0" encoding="utf-8"?><error />');
	$document->type = 'PHP Error';
	$document->message = html_entity_decode($errstr);
	$document->file = basename($file);
	$document->line = $line;
	
	header('Content-type: text/xml; charset=' . Config::charset(), true, 500);
	echo $document->asXML();
	error_reporting(0);
	exit(1);
}

function exception_handler($ex)
{
	$document = new SimpleXMLElement('<?xml version="1.0" encoding="utf-8"?><error />');
	$document->type = 'PHP Exception';
	$document->message = $ex->getMessage();
	$document->file = $ex->getFile();
	$document->line = $ex->getLine();
	
	header('Content-type: text/xml; charset=' . Config::charset(), true, 500);
	echo $document->asXML();
	error_reporting(0);
	exit(1);
}

set_error_handler('error_handler');
set_exception_handler('exception_handler');