getMessage(),
        $e->getFile(),
        $e->getLine(),
        $e->getTraceAsString()
    );
    var_dump($message);
	error_log($message);
}
function thumbErrorHandler($errno, $errstr, $errfile, $errline)
{
	switch($errno)
	{
		case E_USER_ERROR:
			echo "My ERROR [$errno] $errstr
\n";
			echo "  Fatal error on line $errline in file $errfile";
			echo ", PHP " . PHP_VERSION . " (" . PHP_OS . ")
\n";
			echo "Aborting...
\n";
			thumbExceptionHandler(new Exception);
			exit(1);
			break;
		default:
	}
}
set_exception_handler('thumbExceptionHandler'); // disable to troubleshoot.
set_error_handler("thumbErrorHandler"); // disable to troubleshoot.
// error_reporting(0); // suppress all errors or image will be corrupted.
ini_set('gd.jpeg_ignore_warning', 1);
//require_once './e107_handlers/benchmark.php';
//$bench = new e_benchmark();
//$bench->start();
/**
 * Class e_thumbpage
 * @todo Simplify all this, e.g. e107::getInstance()->initMinimal($path_to_e107_config);
 */
class e_thumbpage
{
	function __construct()
	{
		$self = realpath(__DIR__);
		$e_ROOT = $self."/";
		if ((substr($e_ROOT,-1) !== '/') && (substr($e_ROOT,-1) !== '\\') )
		{
			$e_ROOT .= DIRECTORY_SEPARATOR;  // Should function correctly on both windows and Linux now.
		}
		define('e_ROOT', $e_ROOT);
		$mySQLdefaultdb = '';
		$HANDLERS_DIRECTORY = '';
		$mySQLprefix = '';
		// Config
		$config = include($self.DIRECTORY_SEPARATOR.'e107_config.php');
		// support early include feature
		if(!empty($CLASS2_INCLUDE))
		{
			 require_once(realpath(__DIR__ .'/'.$CLASS2_INCLUDE));
		}
		ob_end_clean(); // Precaution - clearout utf-8 BOM or any other garbage in e107_config.php
		if(empty($HANDLERS_DIRECTORY))
		{
			$HANDLERS_DIRECTORY = 'e107_handlers/'; // quick fix for CLI Unit test.
		}
		$tmp = $self.DIRECTORY_SEPARATOR.$HANDLERS_DIRECTORY;
		//Core functions - now API independent
		require($tmp.DIRECTORY_SEPARATOR.'core_functions.php');
		//e107 class
		require($tmp.DIRECTORY_SEPARATOR.'e107_class.php');
		if(empty($config['paths'])) // old e107_config.php format.
		{
			$dirNames = ['ADMIN_DIRECTORY', 'FILES_DIRECTORY', 'IMAGES_DIRECTORY', 'THEMES_DIRECTORY', 'PLUGINS_DIRECTORY', 'HANDLERS_DIRECTORY', 'LANGUAGES_DIRECTORY', 'HELP_DIRECTORY', 'DOWNLOADS_DIRECTORY','UPLOADS_DIRECTORY','SYSTEM_DIRECTORY', 'MEDIA_DIRECTORY','CACHE_DIRECTORY','LOGS_DIRECTORY', 'CORE_DIRECTORY', 'WEB_DIRECTORY'];
			$e107_paths = [];
			foreach ($dirNames as $name)
			{
			    if (isset($$name))
			    {
			        $e107_paths[$name] = $$name;
			    }
			}
			$legacy_sql_info = compact('mySQLserver', 'mySQLuser', 'mySQLpassword', 'mySQLdefaultdb', 'mySQLprefix');
			$sql_info = array_combine(array_map(function($k) {
				return str_replace('mySQL', '', $k);
				}, array_keys($legacy_sql_info)),
		        $legacy_sql_info
			);
		}
		else // New e107_config.php format. v2.4+
		{
			$e107_paths = $config['paths'];
			$sql_info = $config['database'];
			$E107_CONFIG = $config['other'] ?? [];
		}
		$e107 = e107::getInstance()->initCore($e107_paths, e_ROOT, $sql_info, varset($E107_CONFIG, array()));
		// basic Admin area detection - required for proper path parsing
		define('ADMIN', strpos(e_SELF, (e107::getFolder('admin')) != false || strpos(e_PAGE, 'admin') !== false));
		// Next function call maintains behavior identical to before; might not be needed
		//  See https://github.com/e107inc/e107/issues/3033
		$e107->set_urls_deferred();
		$pref = e107::getPref();
		require_once(e_HANDLER."e_thumbnail_class.php");
		$thm = new e_thumbnail;
		$thm->init($pref);
		if(!$thm->checkSrc())
		{
			die('Bad URL');
		}
		$thm->sendImage();
	}
}
new e_thumbpage;
// Check your e_LOG folder
//$bench->end()->logResult('thumb.php', $_GET['src'].' - no cache');
exit;